Hi Leute!
Ich fange gerade richtig mit DLLs an und steige da nicht ganz dahinter:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
i: integer;
blResult : function: boolean; stdcall;
begin
while i = 0 do begin
h1 := ConnectDLL('meinedll.dll');
@blResult := GetProcAddress(h1, pchar('Start'));
if (@blResult <> Nil) then blResult;
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
blResult : function: Boolean; stdcall;
begin
@blResult := GetProcAddress(h1, pchar('Stop'));
if @blResult <> NIL then blResult;
FreeLibrary(h1);
end;
In der
DLL wird ein Thread mit Objekten erstellt, der sich beim Aufruf der "Stop" Funktion (Thread.Beenden:=True; Beim nächsten Thread.Execute wird die Schleife nicht mehr wiederholt; Thread.FreeOnTerminate=True) selbst beendet.
Rufe ich dann FreeLibary auf, ist es auch noch ok, aber in der Zeile dannach (end; (!) ???????) stürzt das Programm mit der Meldung:
---------------------------
Information
---------------------------
In Projekt C:\Dokumente und Einstellungen\name.MAX1337\Eigene Dateien\050218\_debug\Project2.exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x7c9478bf: Schreiben von Adresse 0x01940ffc'. Prozeß angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------
Damit kann ich wie immer sehr viel Anfangen *Ironie*.
Hat irgendwer einen Tip woran das liegen könnte?