那位大侠,教我怎么样在DELPHI中表示一个内存地址。
或者我想用16进制的整数怎么声明或者表示。谢谢,急谢谢

解决方案 »

  1.   

    Pointer($12345)
    就可以得到内存中$12345处的内存指针,你若是要转换成字符串就:
    String(PChar(Pointer($12345)));
    其他的对于整数等等则类似。不过这种方法只可以得到私有进程的内存空间。对于共享空间,建议是用CopyMemory函数。而其他进程的要涉及到OpenProcess,ReadProcessMemory,WriteProcessMemory,CloseHandle
      

  2.   

    @运算符返回变量、函数、过程或方法的地址;也就是说,@对其操作数构造了一个指针。有关指针的更多信息,见指针和指针类型。下列规则适用于@运算符。·  如果X是一个变量,那么@X返回X的地址。(当X是程序型变量时适用特殊规则,见语句和表达式中的程序型类型。)当编译指示 {$T-} 有效时,@X是Pointer类型。而在编译指示 {$T+} 状态下时,@X是 ^T 类型,这里的T是X的类型。·  如果 F 是一个例程(函数或过程),那么@F返回 F 的入口点,@F的类型总是Pointer。·  当 @ 适用于定义在类中的方法时,方法标识符必需被类的名称限定。例如@TMyClass.DoSomething指向TMyClass类的DoSomething方法。更多关于类和方法的信息,见类和对象。 
      

  3.   

    function IntToHex(Value: Integer; Digits: Integer): string; overload;
    function IntToHex(Value: Int64; Digits: Integer): 
    string; overload;在配合这个函数,就行了。
      

  4.   

    WriteProcessMemory函数中的那个地址参数(第2个)因该怎么样来写,
    给源代码好么??
    BOOL WriteProcessMemory(    HANDLE hProcess, // handle to process whose memory is written to  
        LPVOID lpBaseAddress, // address to start writing to 
        LPVOID lpBuffer, // pointer to buffer to write data to
        DWORD nSize, // number of bytes to write
        LPDWORD lpNumberOfBytesWritten  // actual number of bytes written 
       );
    我想修改的地址假设是:024537A4给代码好么??就看那个参数应该怎么来写,。。急。急
      

  5.   

    声明成Pointer类型就行了。
    pp: Pointer;
    pp := GetProcAddress(hModule, // handle to DLL module  
                          LPCSTR lpProcName
                         );将pp传给WriteProcessMemory的第二个参数就行了。