Habs:
Um von einer
DLL zwei Integer-Variablen an das aufrufende Hauptprogramm zu übergeben, können Sie eine Funktion in der
DLL definieren, die diese Variablen als `var`-Parameter zurückgibt. Hier ist ein vollständiges Beispiel, das zeigt, wie Sie dies in Delphi umsetzen können.
### Schritt 1: Erstellen der
DLL
Definieren Sie eine Funktion in der
DLL, die zwei Integer-Variablen über `var`-Parameter zurückgibt.
Delphi-Quellcode:
library ExampleDLL;
uses
SysUtils, Classes;
procedure GetCoordinates(var X, Y: Integer); stdcall;
begin
// Beispielwerte für X und Y
X := 100;
Y := 200;
end;
exports
GetCoordinates;
begin
end.
### Schritt 2: Verwenden der
DLL im Hauptprogramm
Laden Sie die
DLL im Hauptprogramm und rufen Sie die Funktion auf, um die Werte zu erhalten.
Delphi-Quellcode:
uses
Windows, SysUtils;
type
TGetCoordinates =
procedure(
var X, Y: Integer);
stdcall;
var
DLLHandle: THandle;
GetCoordinates: TGetCoordinates;
X, Y: Integer;
begin
// Laden der DLL
DLLHandle := LoadLibrary('
ExampleDLL.dll');
if DLLHandle = 0
then
raise Exception.Create('
Could not load the DLL: ' + SysErrorMessage(GetLastError));
try
// Adresse der Funktion abrufen
@GetCoordinates := GetProcAddress(DLLHandle, '
GetCoordinates');
if not Assigned(GetCoordinates)
then
raise Exception.Create('
Could not find the function in the DLL');
// Funktion aufrufen und die Werte erhalten
GetCoordinates(X, Y);
// Ausgabe der erhaltenen Werte
WriteLn(Format('
Received coordinates: X = %d, Y = %d', [X, Y]));
finally
// Freigeben der DLL
if DLLHandle <> 0
then
FreeLibrary(DLLHandle);
end;
end.
### Wichtige Hinweise:
- **Calling Convention**: Stellen Sie sicher, dass sowohl in der
DLL als auch im Hauptprogramm die gleiche Calling Convention (`stdcall`) verwendet wird.
- **Fehlerbehandlung**: Überprüfen Sie immer den Rückgabewert von `LoadLibrary` und `GetProcAddress`, um sicherzustellen, dass die Operationen erfolgreich waren.
- **Ressourcenmanagement**: Denken Sie daran, die
DLL mit `FreeLibrary` freizugeben, wenn sie nicht mehr benötigt wird.
Dieses Beispiel zeigt eine einfache Möglichkeit, wie Daten von einer
DLL an ein Hauptprogramm übergeben werden können. Die Verwendung von `var`-Parametern ermöglicht es Ihnen, Werte direkt zu ändern und an den Aufrufer zurückzugeben.