AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX und VCL verbinden

Offene Frage von "Minz3"
Ein Thema von Minz3 · begonnen am 18. Sep 2019 · letzter Beitrag vom 23. Sep 2019
 
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FMX und VCL verbinden

  Alt 18. Sep 2019, 16:02
Wenn ich da nichts übersehe, machst du da einen Pointer auf nil. TestFunc ist mit nil initialisiert und so führt @nil zu einer Access Violation. Also einfach das @ entfernen und es sollte gehen.

TestFunc := GetProcAddress(DllHandle, 'TestFunc');

Warum importierst du die Funktion nicht einfach wie folgt. So brauchst du das ganze Load/FreeLibrary Zeugs nicht. Deine DLL muss ja eh immer vorhanden sein. Also macht es keinen Sinn, diese zur Runtime als Latebinding zu laden. Mit dieser Art der DLL Einbindung, wird die DLL automatisch beim Programmstart geladen. Ist also deutlich einfacher.
Delphi-Quellcode:
{...Unit, Interface, Uses, TForm1...}

function TestFunc(): Boolean;

var
  Form1: TForm1;
  DllHandle: THandle;

implementation

{$R *.dfm}
{...Funktionen...}


procedure TForm1.Button2Click(Sender: TObject);
begin
  TestFunc;
end;

{...Funktionen...}
function TestFunc; external 'ProjectDLL.dllname 'TestFunc';

{ Das brauchst du in diesem Fall nicht, da die DLL durch die obige Deklaration automatisch beim Programmstart geladen wird.
initialization
  if DllHandle = 0 then begin
    DllHandle := LoadLibrary('ProjectDLL.dll');
    if DllHandle <= 0 then begin
      MessageDlg('ProjectDLL.dll steht nicht zur Verfügung',
        mtInformation, [mbOK], 0);
    end;
end;

finalization
if DLLHandle <> 0 then
  FreeLibrary(DLLHandle);
}


end.
Lies dir mal in der Hilfe die Beschreibung zu "external": http://docwiki.embarcadero.com/RADSt...tions_(Delphi)

Geändert von Rolf Frei (18. Sep 2019 um 16:30 Uhr)
  Mit Zitat antworten Zitat
 


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 11:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz