Mam małe pytanie, otóż staram się nie spisywać całego kodu, tylko sam go pisać, a ten artykuł ma być tylko drobną pomocą więc:
Kod:
function ReadMemoryString(Address : Integer) : String;
var
IDProc, IDProcess : Cardinal;
Bufor : Array[1..255] of byte;
Number : LongWord;
I : Byte;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient',nil), @IDProc);
IDProcess := OpenProcess(Process_all_access, false, IDProc);
Result := '';
ReadProcessMemory(IDProcess, Ptr(Address), @Bufor[1], 255, Number);
for I := 1 to 255 do
begin
if (Bufor[1] = 0) or (Bufor[1] = $0F) then
break;
Result := Result + CHR(Bufor[i]);
end;
end;
Na czerwono zaznaczyłem części kodu, które mnie interesują. Co oznacza $0F, że jeżeli on zostanie wyciągnięty to następuje wyjście z pętli? Jeszcze interesuje mnie zaznaczony 1 fragment kodu, po co opróżniać rezultat, skoro on jeszcze jest "pusty"?