![]() |
![]() |
| Paypal | 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.
|
![]() |
|
|
|