Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kdo je autorem výstavy obrazových fotografií „Očima Hanse Christiana Andersena“?

V dnešní soutěži hrajeme o:



Chyba - E2033 Types of actual and formal var parameters must be identical

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Chyba - E2033 Types of actual and formal var parameters must be identical

Autor: k*k*t ♂

21:13:55 08.02.2017

Rival napsal/a

Prosím o radu. Volání níže uvedené funkce v Delphi 2009 je bezproblémové. Ale v Delphi XE7 hlásí chybu E2033 u proměnné C.

dwProcessId: DWORD;
phandle: THandle;
P: Pointer;
C: Cardinal;
PB: Pointer;
B: Byte;

if not ReadProcessMemory(phandle,P,@PB,1,C) then break; // zde hlásí chybu


Děkuji za pomoc...



v roce 1990 jsem si koupil knizku o pascalu a delphi je pascal, ne ?! :-D

ty volas funkci s parametrem C: Cardinal, ale nize uvedena funkce ma jako posledni parametr
typ SIZE_T, takze se to mezi verzema asi zmenilo, ne?!
takze upravit typ C na SIZE_T a snad to klapne :-)



function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
nSize: SIZE_T; var lpNumberOfBytesRead: SIZE_T): BOOL; stdcall;

Citovat příspěvek

 

Chyba - E2033 Types of actual and formal var parameters must be identical

Autor: Rival ♂

12:36:03 26.01.2017

Prosím o radu. Volání níže uvedené funkce v Delphi 2009 je bezproblémové. Ale v Delphi XE7 hlásí chybu E2033 u proměnné C.

function SendMessageRetStr(wnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): String;
var
dwProcessId: DWORD;
phandle: THandle;
P: Pointer;
C: Cardinal;
PB: Pointer;
B: Byte;
begin
Result := '';
GetWindowThreadProcessID(wnd, pointer(dwProcessId));
phandle := OpenProcess(PROCESS_VM_READ, False, dwProcessId);
if phandle = 0 then exit;
P := Pointer(SendMessage(wnd, uMsg, wParam, lParam));
PB := nil;
B := 0;
repeat
if not ReadProcessMemory(phandle,P,@PB,1,C) then break; // zde hlásí chybu
B := Byte(PB);
if B <> 0 then begin
Result := Result + Chr(B);
end;
P := Pointer(DWord(P)+1);
until (B=0);

CloseHandle(phandle);
end;

Děkuji za pomoc...

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: