PDA

Ver la Versión Completa : ¿como obtener direcciones de memoria...?


usuario87
07-08-2011, 01:12:10
hola estoy empezando con delphi y me acabo de registrar, podrian decirme como podria obtener la direccion de una funcion hecha por mi, tambien la direccion de una variable numerica (DWORD integer) y la direccion de cadena de una variable string, el entorno que uso: delphi 7 segunda edicion v7.2.
gracias.

ecfisa
07-08-2011, 01:38:13
Hola usuario87.


...
implementation
var
DW: DWORD;
ST: string;

function MiFuncion: Integer;
begin
//
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('MiFuncion: %p %sDW: %p %sST: %p', [@MiFuncion, #10#13,@DW, #10#13, @ST]));
end;


Saludos.

usuario87
07-08-2011, 03:46:46
esea nada mas con poner delante de la variable o funcion el "@" (arroba) ¿me devuelve la direccion de memoria?, bien, gracias.

ecfisa
07-08-2011, 04:22:44
Hola usuario87.

Primeramente te pido disculpas por no haberlo advertido... Muy bienvenido a los foros del Club Delphi. :)

esea nada mas con poner delante de la variable o funcion el "@" (arroba) ¿me devuelve la direccion de memoria?, bien, gracias.

Si así es. También existe la función Addr que es equivalente al operador "@".

Te pongo otro ejemplo:

...
function prueba: Integer;
begin
//
end;

procedure TForm1.Button1Click(Sender: TObject);
var
dw: DWORD;
st: string;
p1,p2,p3: Pointer;
begin
p1:= Addr(prueba);
p2:= @dw;
p3:= Addr(st);
Label1.Caption:= Format('prueba: %p',[p1]);
Label2.Caption:= Format('dw: %p',[p2]);
Label3.Caption:= 'st: '+IntToHex(Integer(p3), 8); // (*)
end;

(*) Mostrado con la función IntToHex, sugerido anteriormente por escafandra en este post (http://www.clubdelphi.com/foros/showpost.php?p=408382&postcount=2)

Un saludo.