Autor |
Beitrag |
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Di 20.04.04 22:10
ich komme einfach nicht dahinter:
ich baue gerade an einem datei-vernichter.
damit das form aber nicht einfriert während ich den code ausgeführt wird hab ich das alles in nen thread kopiert.
wenn dieser thread jetzt ausgeführt und terminiert wird, bekommt ich beim schließen des fensters diese fehlermeldung:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| --------------------------- Anwendungsfehler --------------------------- Exception EOSError in Modul FileShredder.exe bei 0000D56E.Systemfehler. Code: 1400. Ungültiges Fensterhandle. --------------------------- OK --------------------------- |
hier ist der source zu dem programm (soll sowieso nach ein paar schönheitskorrekturen open-source werden)
www.nettraxx.de.vu/t...der2FileShredder.zip (22kB)
es werden keine extra komponenten benötigt.
THX
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
Zuletzt bearbeitet von patrick am Fr 23.04.04 18:55, insgesamt 2-mal bearbeitet
|
|
patrick 
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Do 22.04.04 12:19
nachtrag: ich habs jetzt mal mit ner fremdkomponente versucht. dabei tritt der fehler aber nicht auf.
ich will aber keine fremdkomponenten benutzen 
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 22.04.04 16:25
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TShredThread.Execute; begin try with AC2FsForm1 do begin if MessageDlg('Sind sie sicher das sie die ausgewählte(n) Dateien löschen '+#13+#10+'wollen?', mtConfirmation, [mbYes,mbNo], 0) = mrNo then exit; try EraseAction; except MessageDlg('Fehler beim Löschen der Dateien', mtError, [mbOK], 0); exit; end; Status(0,'Löschvorgang abschließen...',true); Progress_Small.Position:=0; Progress_Big.Progress:=0; if abort then begin Status(0,'Löschvorgang abgebrochen',true); MessageDlg('Der Löschvorgang wurde abgebrochen', mtError, [mbOK], 0); end else begin Status(0,'Löschvorgang abgeschlossen',true); MessageDlg('Der Löschvorgang wurde erfolgreich abgeschlossen.', mtInformation, [mbOK], 0); end; end; finally ShredThread.Terminate; end; end; |
Du hast gelsen, was als Kommentar in der Thread Unit steht, wenn du über die IDE eine Unit für einen Thread erstellst? Du bist dir im Klaren, dass du an allen Ecken und Enden in der Execute Methode von TThread auf sichtbare Komponenten der VCL zu greifst?
|
|
patrick 
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Do 22.04.04 17:50
Zitat: |
Du hast gelsen, was als Kommentar in der Thread Unit steht,
|
nein, welche thread-Unit?
Zitat: |
wenn du über die IDE eine Unit für einen Thread erstellst? Du bist dir im Klaren, dass du an allen Ecken und Enden in der Execute Methode von TThread auf sichtbare Komponenten der VCL zu greifst? |
ja, aber ich bin mir keiner schuld bewusst (was zu 100% aus unwissenheit stammt)
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 22.04.04 18:13
So? Dann solltst du das nächste mal richtig lesen:
Zitat: |
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure TTest.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }
|
Rein theoretisch reicht es den ersten Satz zu lesen.
|
|
patrick 
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Do 22.04.04 18:20
THX
das wusste ich nicht
ich werd's überarbeiten
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
patrick 
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Fr 23.04.04 18:54
fehler behoben und alles ok
THX
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
|