AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) GetProcAddress Error "Left side cannot be assigned to"
Thema durchsuchen
Ansicht
Themen-Optionen

GetProcAddress Error "Left side cannot be assigned to"

Ein Thema von MyRealName · begonnen am 16. Jan 2019 · letzter Beitrag vom 16. Jan 2019
Antwort Antwort
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#1

GetProcAddress Error "Left side cannot be assigned to"

  Alt 16. Jan 2019, 14:49
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
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: GetProcAddress Error "Left side cannot be assigned to"

  Alt 16. Jan 2019, 15:15
Hast du mal das @ vor dem JmpPoint weggelassen?
Das ist zumindest mal nicht notwendig, evtl sogar falsch.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: GetProcAddress Error "Left side cannot be assigned to"

  Alt 16. Jan 2019, 15:19
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
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#4

AW: GetProcAddress Error "Left side cannot be assigned to"

  Alt 16. Jan 2019, 15:25
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.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: GetProcAddress Error "Left side cannot be assigned to"

  Alt 16. Jan 2019, 15:41
Das geht, Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: GetProcAddress Error "Left side cannot be assigned to"

  Alt 16. Jan 2019, 15:42
Alternativ kannst du auch den Rückgabewert von GetProcAddress auf TProc casten. Das sollte dann auch (ohne @) funktionieren.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
16. Jan 2019, 17: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.
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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