“”DELPHI:E2033实际和正式var参数的类型必须相同“”

时间:2016-01-28 21:03:02

标签: delphi

所以我收到此错误消息,有人可以帮助我,已经尝试了很多谷歌答案:p没有用。

ctrl + shift +空格结果在ReadProcessMemory上

**Parameters** 
hProcess System.Cardinal 
IpBaseAddress System.Pointer 
IpBuffer System.Pointer 
nSize System.Cardinal 
IpNumberOfBytesRead System.Cardinal 
**Returns** 
System.Boolean 

Ptr功能:

Ptr Function: function Ptr(Value: Integer): Pointer;  

变量

var 
  Form1: TForm1; 
  PH : THandle; 
  PID, ThID: DWORD; 
  H : THandle;

function Ptr(Value: Integer): Pointer;

功能

function LerInt(Address: Integer): Integer;
var
  value:integer;
  ler:dword;
begin
  H := FindWindow(nil, 'Something Here :)');
  ThID := GetWindowThreadProcessID(H, @PID);
  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
  ReadProcessMemory(PH, Ptr(Address), @value, 4, ler); // THIS LINE
  Result:=value;
end;

1 个答案:

答案 0 :(得分:3)

变量ler是错误的类型。它必须是SIZE_T

其他评论:

  1. 您不需要将整数转换为指针的函数。只需使用Pointer(address)进行投射即可。请注意,如果您通过64位编译器传递此代码,则会遇到指针截断问题。
  2. 您不会检查任何API调用中的错误。请检查错误。