Hey Leute,
ich hab da ma ein Problem...
Ich möchte Dateien kopieren. Über eine zweite Form, soll der ganze Kopierverlauf angezeigt werden ( bei welcher Datei er ist, Progress Bar, usw...)
Hab das so geschrieben:
Delphi-Quelltext
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:
| max := frm_main.o_list.ItemCount;
if deviceAction = 1 then begin frm_copy.Show; for i := 0 to max -1 do begin filename := ExtractFileName(frm_main.o_list.Lines[i]); frm_copy.doFormShit(1, max, i, filename); NewFileName := devicePath + ExtractFileName(frm_main.o_list.Lines[i]); OldFile := TFileStream.Create(ExtractFileName(frm_main.o_list.Lines[i]), fmOpenRead); try NewFile := TFileStream.Create(NewFileName, fmCreate); try NewFile.CopyFrom(OldFile, OldFile.Size); finally FreeAndNil(NewFile); end; finally FreeAndNil(OldFile); end; end; end; |
Das Problem hierbei liegt darin, das die Form zwar angezeigt wird, die Inhalte, an denen man den Kopierstatus ja ablesen soll, erst erscheint, wenn das kopieren bereits zu Ende ist... Es "laggt" sozusagen...
Noch zu erwähnen wäre da, das auf einen USB Stick kopiert wird, was an sich ja ne Weile dauern kann.
Wäre vielleicht die WINAPI-Func CopyFile() schneller, als die Dateien alle über Streams zu kopieren? (Also nicht vom Kopiervorgang her schneller, aber schnell genug, damit das Prog die Form (!vollständig!) gleichzeitig zum kopieren angezeigt werden kann?
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt.
Moderiert von
Tino: Überflüssige Absätze entfernt.