Autor Beitrag
JustusJonas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 222



BeitragVerfasst: Mi 30.11.05 11:20 
Hallo Leute,

ich habe ein Programm geschrieben, dass Dateien kopieren soll.
Nun möchte ich aber alle Dateien, die mit "EH" beginnen in ein anderes Verzeichnis kopieren.
Ich habe das ganze versucht so zu lösen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
while FindFirst(Quelle, 0, sr ) = 0 do //So lange Dateien gefunden werden
  begin
     InDatei := ExtractFilePath(Quelle) + sr.Name;
     OutDatei := Ziel +  sr.Name;
     OutDateiBackup := Backup + '\' + sr.Name;
     if sr.Name <> 'EH*.*' then
       begin
         ForceDirectories(Ziel2); //Out-Verzeichnis erstellen
         FileCopy(InDatei, Ziel2); //Datei ins Ziel-Verzeichnis kopieren
       end
         else
           begin
             ForceDirectories(Ziel); //Out-Verzeichnis erstellen
             FileCopy(InDatei, Ziel); //Datei ins Ziel-Verzeichnis kopieren
           end;
     MailBody.Add(sr.Name + ' ins Ziel-Verzeichnis (' + Ziel + ') kopiert');
     ForceDirectories(Backup); //Backup-Verzeichnis ohne Unterverzeichnis erstellen
     FileMove(InDatei, Backup); //Datei ins Backup-Verzeichnis verschieben
     MailBody.Add(sr.Name + ' ins Backup-Verzeichnis (' + Backup + ') verschoben');
     mMeldung.Lines.Add(GetDatum + ' - ' + GetTime + ': Datei(en) kopiert!');
     inc(i);
     SendFiles := True;


Funktioniert aber leider nicht :(
Delphi kopiert alle Dateien nach Ziel2 und die anderen nicht mehr nach Ziel! :(

Was mache ich falsch?

Greetz
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: Mi 30.11.05 11:23 
Ich glaube du kannst in Zeile 7 nicht sr.Name <> 'EH*.*' schreiben. Ich würde Funktionen wie Pos() verwenden. Schau dazu einfach mal in die Referenz!
JustusJonas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 222



BeitragVerfasst: Mi 30.11.05 12:33 
Danke!
Das war der richtige Tipp, hätte ich auch selbst draufkommen können.

ausblenden Delphi-Quelltext
1:
if copy(sr.Name,0,2) <> 'EH' then ...					


So gehts! :)

Greetz
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Do 01.12.05 08:39 
Hallo JustusJonas!

Was soll denn das darstellen? while FindFirst ist total falsch! Informiere Dich mal in der OH über FindNext und Findclose!
Inwieweit das Verschieben der Datei auf die Dateisuche einen Einfluß hat, weiß ich nicht. Auf jeden Fall produzierst Du ohne FindClose ein Speicherloch.

Außerdem ruft Du das ForceDirectories für jede Datei erneut auf. Da wird das Programm aber bestimmt super-schnell durch! :mrgreen: Einmal vor der Schleife sollte reichen. Wenn keine leeren Ordner erzeugt werden sollen, verwende ein Boolean-Flag.

Gruß

Dietmar Brüggendiek