Witam mam otóż problem, nie wiem czego to wina, ale u mnie na komputerze używając takiego kodu coś nie działa.

function ReadMemInteger(Address: Cardinal): Cardinal;       //Read adress:value
var
tProc : THandle;
NBR : Cardinal;
value :integer;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient',Nil), @ProcessID);
tProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID);
ReadProcessMemory(tProc, Ptr(Address), @value, 4, NBR);
CloseHandle(tProc);
Result := value;
end;


procedure MemWriteInteger(Address: Integer; buf: Integer; Length: DWORD);
var
ProcID, THandle : Integer;
e : DWORD;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcID);
THandle := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
WriteProcessMemory(THandle, Ptr(Address), @buf, Length, e);
CloseHandle(THandle);
end;

I gdy odczytam te dane co niestety coś źle się dzieje bo nie chce odczytać mi jednego adresu mimo że u kolegi który ma ten sam kod to mu działa to gdy wpisuje tam coś to 0 reakcji ze strony programu.
Adresy jak sprawdzałem cheat enginem to wkazywało mi 3 różne o tych samych wartościach i na 2 debugowało a na trzeciej 0 reakcji.