In meinem derzeitigen Projekt benötige ich mehrere Threads.
Da ich sowas unter Lazarus bisher noch nicht gemacht habe, hab ich mehr oder weniger nach dieser Anleitung gearbeitet:
http://wiki.lazarus.freepascal.org/Mult ... utorial/de
Leider produziert mein Code aber einen TApplication.HandleException Access violation
Ich rufe meinen Thread (TAddDir) wie folgt auf:
Code: Alles auswählen
procedure Tfrmhaupt.AddDirToBiblio;
var AddDir:TAddDir;
begin
if not adddirbol then
begin
anzeigeprogressbar[1] := Progressbar2; //Irrelevant für den Fehler..
AddDir.Create(true); //Der Aufruf
AddDir.Resume; //Hierher komme ich gar nicht erst...
ShowMessage('Daten werden hinzugefügt.');
end else
ShowMessage('Es wird bereits e...');
end;
im constructor Create() (in einer anderen Unit(!)) wird dann der Fehler erzeugt:
Code: Alles auswählen
constructor TAddDir.Create(CreateSuspended:boolean);
begin
FreeOnTerminate := true; //Hierbei wird der Access violation erzeugt und der Aufruf bricht ab..
inherited Create(CreateSuspended);
end;
Leider habe ich keine Möglichkeit den Lazaruseigenen Debugger/das Nachrichtenfenster einzusehen, da das Programm nur über startscript zu starten ist und nicht über Lazarus.
Habe also nur die Fehlermeldungen des Terminals:
Code: Alles auswählen
TApplication.HandleException Access violation
Stack trace:
$00000000
$0808CA6F
$0809FDC8
$0818EA51
$0818F058
$0806C28A
$081F0A9B
$0829A973
$004FBF2C
$004EC412
$00502B85
$00503FAC
$00504452
$00377945
$002553A0
$00256D3F
$0024BA54
Wäre echt super;-)
Viele Grüße,
SiMoeBoe