Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

FreeLibary verursacht Absturz

  Alt 2. Dez 2005, 09:36
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?
  Mit Zitat antworten Zitat