FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Leer direccion de memoria
Hola a todos,
el problemilla es simple. Necesito leer el contenido de la direccion de memoria 201h o 513d y guardar su contenido en un archivo. Lo del archivo lo se pero no se como acceder a la direccion especificada. ¿Alguna sugerencia? Gracias desde ya |
#2
|
||||
|
||||
Puedes hacerlo con ensamblador, pero necesitas dos números:
Segmento y Desplazamiento. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Si se trata de una dirección del mismo proceso, podrías hacer algo así:
Código:
const BUFFER_SIZE = 1000; var PData: Pointer absolute $00400000; begin with TFileStream.Create('C:\MEM.DAT', fmCreate) do try WriteBuffer(PData, BUFFER_SIZE); finally Free; end; end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
|||
|
|||
En realidad lo que necesito es leer un datos que entra por el puerto del joystick y grabarlo
el puerto esta en las direcciones 201h y el largo debe ser de un integer o algo parecido. estoy utilizando win2000 gracias |
#5
|
|||
|
|||
__________________
Marín Ignacio Borthiry (Viet) - "El hombre arriesga su vida cada vez que elije y eso es lo que lo hace libre" ;) |
#6
|
||||
|
||||
¿Que te parece este código?
Código:
unit RX2_Util; interface uses Windows; // set address of game port (default '$201') procedure SetPortAddr(const addr: string); // get current channel number and signal presence procedure GetStatus(var chan: Integer; var signal: Boolean); // push button for t milliseconds procedure PushButton(t: Integer); implementation uses SysUtils; var port_addr: Word; function ReadPort: Byte; begin asm mov dx,port_addr; in al,dx shr al,4 mov result,al end; end; procedure SetPortAddr(const addr: string); begin port_addr := StrToInt(addr); end; procedure GetStatus(var chan: Integer; var signal: Boolean); var data: Byte; const chan_no: array[0..7] of Integer = (0,1,2,3,0,4,0,5); begin data := ReadPort; signal := data > 8; chan := chan_no[data mod 8]; end; procedure PushButton(t: Integer); var start: Integer; begin start := GetTickCount; repeat asm mov dx,port_addr mov al,1 out dx,al end; until (GetTickCount - start) >= t; end; initialization SetPortAddress('$201'); finalization end.
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
||||
|
||||
Recién me doy cuenta que estas hablando de Win2000... dudo que esta plataforma te deje leer directamente el puerto, pero no tengo como probarlo, pues solamente tengo un Win98
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#8
|
|||
|
|||
y ahora? que hacemos?
|
#9
|
||||
|
||||
Probalo, y comentanos si te funciona... caso contrario comentanos los errores!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|