Hi,
ich möchte von meiner DLL einen Pointer auf eine Record-Struktur, welche in der DLL erzeugt wird und ich aus dem Hauptprogramm auf diese Record-Struktur zugreifen kann. Mein Problem ist, daß schon beim Aufruf der Funktion der Übergabeparameter nicht korrekt ankommt (steht in der DLL Müll drin). Bis zum Funktionsaufruf läuft alles in bester Ordnung.
<PRE>
procedure TFMain.LoadModules(Sender: TObject; var bCanRun: Boolean);
type
TGetModProc = function (BusTyp:Word): Pointer;
var
iModuleDLL: Integer;
GetModProc: TGetModProc;
PModulesA: TPTHwModules;
begin
iModuleDLL := LoadLib(SEMD_DLL_Txt);
if iModuleDLL > 0 then
begin
@GetModProc := GetProc(iModuleDLL, 'GetModule');
if Assigned(GetModProc) then
begin
PModulesA := GetModProc(TYPABUS);
end;
end
else
begin
bCanRun := iModuleDLL > 0;
end;
end;
</PRE>
TYPABUS ist eine Konstante mit dem Wert 1. In der DLL kommt aber ein ganz anderer Wert an. In PModulesA sollte nachher die Adresse auf die Record-Struktur drinstehen.
Kann mir hier jemand sagen, warum in der DLL der Übergabeparameter schrott ist?
Martin
ich möchte von meiner DLL einen Pointer auf eine Record-Struktur, welche in der DLL erzeugt wird und ich aus dem Hauptprogramm auf diese Record-Struktur zugreifen kann. Mein Problem ist, daß schon beim Aufruf der Funktion der Übergabeparameter nicht korrekt ankommt (steht in der DLL Müll drin). Bis zum Funktionsaufruf läuft alles in bester Ordnung.
<PRE>
procedure TFMain.LoadModules(Sender: TObject; var bCanRun: Boolean);
type
TGetModProc = function (BusTyp:Word): Pointer;
var
iModuleDLL: Integer;
GetModProc: TGetModProc;
PModulesA: TPTHwModules;
begin
iModuleDLL := LoadLib(SEMD_DLL_Txt);
if iModuleDLL > 0 then
begin
@GetModProc := GetProc(iModuleDLL, 'GetModule');
if Assigned(GetModProc) then
begin
PModulesA := GetModProc(TYPABUS);
end;
end
else
begin
bCanRun := iModuleDLL > 0;
end;
end;
</PRE>
TYPABUS ist eine Konstante mit dem Wert 1. In der DLL kommt aber ein ganz anderer Wert an. In PModulesA sollte nachher die Adresse auf die Record-Struktur drinstehen.
Kann mir hier jemand sagen, warum in der DLL der Übergabeparameter schrott ist?
Martin
Comment