AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateien datumsabhängig kopieren

Dateien datumsabhängig kopieren

Ein Thema von xweghau · begonnen am 6. Jan 2009 · letzter Beitrag vom 7. Jan 2009
Antwort Antwort
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#1

Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 15:31
Hallo Leute,

ich habe mir aus verschiedenen Quellen ein Programm zusammengestellt, dass ein Verzeichnis inkl. der Unterverzeichnisse nach Dateien durchsucht, die neuer sind, als ein vorgegebenes Datum. Neuere Dateien werden in einen vorgegebenen anderen Bereich (mit gleicher Verzeichnisstruktur wie im Original) kopiert. Die Dateien werden anschließend auf DVDs gebrannt und dann wieder gelöscht.
Das Programm scheint auch zu funktionieren, aber wenn der zu durchsuchende Bereich "etwas" größer wird, dann bringt das Programm den PC fast zum erliegen und ich habe das Gefühl (ich habe insgesamt nur etwa 450 GB Daten auf DVDs), dass es irgendwann abbricht. "Etwas" größer heißt: 632 GB (wirklich GB) Größe, 20.443.043 Dateien in 210.219 Ordnern.

Ich habe den kompletten Quellcode in einem ZIP beigefügt, da könnt Ihr vielleicht mal reinsehen, vielleicht fällt Euch etwas auf, oder Ihr kennt bessere Möglichkeiten? Ach ja, ich verwende Delphi 7 Professional. Danke.

Gruß
Franz
Angehängte Dateien
Dateityp: zip dateien_datumsabh_ngig_kopieren_184.zip (11,9 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 16:15
Hallo,

auf die Schnelle kann ich im Quelltext nix entdecken, was sich als arge Bremse auswirken könnte.
Mach Dir auf das Formular mal noch 'ne Statusbar als SimplePanel und weise dann SimpleText am Anfang von GetAllFiles mask zu, dahinter noch ein Application.ProcessMessages, dann kannst Du sehen, wielange ungefähr für 'ne Datei gebraucht wird.
Bei der riesigen Datenmenge kann das Auflisten der Dateien auch im Explorer... schon mal 'ne Weile dauern.

Eventuell ergänzt Du Dir dasshowmessage('Beim Kopieren der letzten Datei ist ein Fehler aufgetreten. Der Vorgang wird abgebrochen.'); noch um den Namen der Datei, bei der der Fehler auftritt.
Hinter dem Showmessage verlässt Du die Routine mit Exit, d. h.: FindClose wird nicht aufgerufen.
Da fällt mir auf: Für das erste FindFirst fehlt das FindClose, dass könnte durchaus Auswirkungen haben, beobachte mal im Taskmanager, wie sich der Speicherverbrauch (incl. Handles, Threads...) während des Programmlaufes verhält, wächst da irgendwas permanent, wenn auch wenig an?
  Mit Zitat antworten Zitat
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#3

Re: Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 17:09
Hallo Stephan,

die Zeit, bis der Durchlauf abgeschlossen wird, ist nicht relevant. Meinetwegen soll das Programm zwei Tage laufen, das ist egal, wenn es funktioniert. Dass der PC lahmgelegt wird, könnte tatsächlich am fehlenden FindClose liegen. Wie gesagt habe ich einfach ein paar Routinen aus dem Netz gezogen (gut dass das möglich ist) und mir zusammengestrickt. Ich hoffe halt nur, dass diese Routine ansonsten korrekt ist und nicht irgendwelche Dateien ausläßt. In der Anzeige der durchsuchten Dateien sind wesentlich weniger Dateien aufgeführt, als tatsächlich zu durchsuchen sind.

Ich werde das jetzt nach der Änderung (zwei weitere FindClose) noch mal testen. Ein Abbruch, der die Message ausgelöst hätte, ist zum Glück noch nicht vorgekommen, sollte auch nicht möglich sein, da die USB Festplatte, die ich nutze nur lokal zugreifbar ist. Ich werde die Message aber erweitern. Danke für die Tipps, ich melde mich, wenn der Lauf durch ist.

Danke.

Gruß
Franz
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 17:21
Hallo,

dann schau Dir doch mal den Thread an http://www.delphipraxis.net/internal...t.php?t=149497, da ging es auch ums "allesfinden". Die Fortschrittanzeige hatte ich nur gedacht, um überhaupt zu sehen, dass sich was tut, auch wenn es lange dauert, eventuell bleibt das Programm ja auch einfach mal stehen (irgendein Timeout oder was weiß der Geier).
  Mit Zitat antworten Zitat
Benutzerbild von lincore
lincore

Registriert seit: 27. Dez 2008
Ort: Bad Segeberg
26 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 17:26
Entschuldigung dass ich off topic werde, aber würde xcopy nicht für deine Zwecke reichen?
Code:
S:\> xcopy workspace\delphi backup\delphi /D:01-01-2009 /E /Y
Das kopiert zum Beispiel sämtliche Dateien inklusive Unterverzeichnisse, die am 01.01.2009 oder später modifiziert worden sind.
Keine Ahnung, wie sich das mit 600+ GByte Daten verhält. Du kannst dafür aber (ziemlich) sicher sein, dass keine unvorhergesehenen Bugs auftauchen.

Gruß,
lincore
Wenn Stallman eines Tages mit Zornesröte im Gesicht und blutverschmierter Klinge vor deiner Tür steht, behaupte nicht ich hätte dich nicht gewarnt.
  Mit Zitat antworten Zitat
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#6

Re: Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 21:41
Hallo!

An Stephan:
Besten Dank für Deine Hilfe. Bis jetzt (Beginn etwa um 16:30 Uhr) sind etwa die Hälfte der Files überprüft worden. Der PC läuft ruhig vor sich hin, es sind keine besonderen Verzögerungen festzustellen. Es scheint etwas langsamer geworden zu sein, aber das spielt keine Rolle.

An lincore:
Ich werde das sofort ausprobieren, wenn mein Programm durchgelaufen ist. Wenn das klappt, dann habe ich nur noch eins zu tun:
Den Parameter D kannte ich nicht. Deswegen bin ich überhaupt nicht auf die Idee gekommen, xcopy zu verwenden.

Ich melde mich, wenn ich fertig bin (inkl. Mauer).

Gruß und einen schönen Feierabend
Franz
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Dateien datumsabhängig kopieren

  Alt 6. Jan 2009, 22:17
Hallo,

ich habe mir auch mal so ein Progamm geschrieben - Allerdings habe ich keine Probleme mit der Geschwindigkeit. Vielleicht schaust du dir den Sourcecode mal an und findest irgendetwas, das ich anders mache.
Angehängte Dateien
Dateityp: dpr inccopy_150.dpr (5,0 KB, 18x aufgerufen)
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#8

Re: Dateien datumsabhängig kopieren

  Alt 7. Jan 2009, 15:12
Hallo zusammen!

An Stephan:
Das Programm ist problemlos durchgelaufen. Es hat zwar fast 10 Stunden gebraucht, aber das spielt keine Rolle. Danke für die Mühe.

An lincore:
Ich habe - wie angekündigt - die nächstliegende Wand intensiv genutzt. Das gleiche Ergebnis habe ich mit xcopy in etwa 4,5 Stunden erzielt. Danke.

An Andreas:
Danke für den Code. Die Geschwindigkeit ist nicht maßgeblich. Du benutzt TFileStream, ich nehme einfach copyfile. Daran könnte der Geschwindigkeitsunterschied vielleicht liegen, keine Ahnung. Vielleicht baue ich das mal in mein Programm ein.

Gruß
Franz
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz