Entwickler-Ecke

Dateizugriff - "Hänger" beim Kopieren mit Copyfile


blackbirdXXX - Di 29.07.03 11:21
Titel: "Hänger" beim Kopieren mit Copyfile
Wenn ich eine Datei mit

Delphi-Quelltext
1:
2:
if not CopyFile(PChar(Quellé), PChar(Ziel), true) then 
label1.Caption := 'Fehler beim Kopieren';

Kopieren will und ich dies nach anzeigen des Formulares mache sieht man das Formular nicht.
Auch meine Statusanzeige nicht.
Wie kann ich machen das das Formular zuerst auftaucht. Nach jeder Datei stehen bleibt einen Balken vergrößert und dann erst weiterkopiert.

Dies ist mein Quelltext:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var Quelldatei, Zieldatei, pfad: string;
    i, max, fehler: Integer;
begin
 pfad := ExtractFilePath(Application.ExeName) + 'data/';
 CreateDirectory(PChar(step2.Edit1.Text + '/'), nil );
 for i := 1 to dateiliste.Lines.Count do
  begin
   Quelldatei := dateiliste.Lines.Strings[i-1];
   Zieldatei := step2.Edit1.Text + '/' + Quelldatei;
   if not CopyFile(PChar(pfad + Quelldatei), PChar(Zieldatei), true) then fehler := 1;
   max := 200 div dateiliste.Lines.Count;
   fortschritt.Width := max * i;
  end;
 if fortschritt.Width > 95 then
 begin
  fortschritt.Width := 200;
  exitform.Show;
 end;
end;


patrick - Di 29.07.03 12:40

wie heißt den die funktion in der du den quelltext eingebunden hast.
wenn du den quelltext unter onformcreate reinschreibst, wird der code bein initiallisieren des forms ausgeführt und das form wird nicht angezeigt.

wenn ich richtig liege füge den quelltext unter onformshow ein

wenn nicht... gib bitte genauere daten an wo und wie du den quelltext eingebunden hast THX


teebee - Di 29.07.03 14:16

Wenn Du Deine Statusanzeige aktualisieren willst, während die Schleife läuft, musst Du als letzte Anweisung innerhalb der Schleife ein
Application.ProcessMessages; einfügen. Damit gibst Du Deinem Programm die Möglichkeit, auf die Veränderung zu reagieren.

Gruß, teebee


Delete - Di 29.07.03 14:19

Eine ebenfalls gute Idee ist Suche in: Delphi-Forum, Delphi-Library SHFILEOPERATION. Die Methode des Explorers zum Kopieren, Verschieben und Löschen. Inkl. Dialog mit Progressbar, so dass du dich um absolut nichts kümmern musst.

Man kann übrigens auch mehrere Dateien auf einmal angeben ... :wink:


blackbirdXXX - Mi 30.07.03 09:06

Das mit Application.ProcessMessages funktioniert super.

Danke