Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   GetProcAddress Error "Left side cannot be assigned to" (https://www.delphipraxis.net/199336-getprocaddress-error-left-side-cannot-assigned.html)

MyRealName 16. Jan 2019 13:49

GetProcAddress Error "Left side cannot be assigned to"
 
ich habe einige Sachen mit DLLs die dynamisch geladen werden, aber stosse gerade in einem neuen Projekt auf den Fehler in folgender Routine :

Code:
procedure TForm2.Button1Click(Sender: TObject);
var JmpPoint : TProc;
    Handle : HMODULE;
begin
    Handle := LoadLibrary(PChar(''));
    if Handle <> 0 then begin
      @JmpPoint := GetProcAddress(Handle, PChar('RegisterModules'));
      If Assigned(JmpPoint) Then
        JmpPoint;
    end;
end;
Ja, ich weiss, dass es ein leer-string ist ;-)

Welche Einstellung muss beim Projekt gemacht werden, damit der Fehler "Left side cannot be assigned to" nicht mehr kommt ?

Danke schonmal

Neutral General 16. Jan 2019 14:15

AW: GetProcAddress Error "Left side cannot be assigned to"
 
Hast du mal das @ vor dem JmpPoint weggelassen?
Das ist zumindest mal nicht notwendig, evtl sogar falsch.

MyRealName 16. Jan 2019 14:19

AW: GetProcAddress Error "Left side cannot be assigned to"
 
Geht nicht, weil GetProcAdress einen Pointer liefert, JmpPoint aber vom Typ TProc ist.
Den code kann kan in eine leeres VCL app Projekt kopieren mit einem Button oder gleich ins FormShow event, es lässt sich wegen dem Fehler ja nicht kompilieren. Dann kann man selbst gleich sehen, dass ob es geht oder nicht :)

peterbelow 16. Jan 2019 14:25

AW: GetProcAddress Error "Left side cannot be assigned to"
 
TProc ist ein Delphi-Spezifischer Typ der mehr ist als nur ein simpler Pointer auf eine Funktion. Wenn RegisterModules eine simple prozedur ohne parameter und rückgabewert ist mußt Du JmpPoint wie folgt deklarieren:

var JmpPoint : procedure;

Dann sollte die Zuweisung funktionieren.

MyRealName 16. Jan 2019 14:41

AW: GetProcAddress Error "Left side cannot be assigned to"
 
Das geht, Danke!

Neutral General 16. Jan 2019 14:42

AW: GetProcAddress Error "Left side cannot be assigned to"
 
Alternativ kannst du auch den Rückgabewert von GetProcAddress auf TProc casten. Das sollte dann auch (ohne @) funktionieren.

DP-Maintenance 16. Jan 2019 16:35

Dieses Thema wurde am "16. Jan 2019, 17:35 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Win32/Win64 API (native code)" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz