Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Event-Message wenn Datei fertig kopiert (https://www.delphipraxis.net/58787-event-message-wenn-datei-fertig-kopiert.html)

cr174 12. Dez 2005 18:05


Event-Message wenn Datei fertig kopiert
 
Hallo,

habe folgendes Problem:

Ich erstelle eine Art "Verzeichnis Überwachung", in der festgestellt wird ob Dateien erstellt, geändert, gelöscht oder kopiert werden.
Wollte das ganze erweitern, so dass eine neu in den Ordner kopierte Datei automatisch in einen anderen Ordner verschoben wird.
Das Problem ist nur, wie kriege ich ohne Timer(Dateistatus abfragen), besser mittels Event-Message heraus, ob die Datei schon FERTIG kopiert ist!
Die Datei-Größen können nämlich flexibel sein, von einigen KB bis hin zu einigen GB.

Wäre für Eure Hilfe dankbar.

Bernhard Geyer 12. Dez 2005 20:54

Re: Event-Message wenn Datei fertig kopiert
 
Wie machst Du bisher deine "Verzeichnisüberwachung". Da gibt es schon passende Eventschnittstellen von Windows wenn NTFS verwendet wird.

Ansonsten: Probier einfach die Datei exclusiv zu öffnen. Falls es nicht geht ist noch irgendjemand aktiv drauf.

cr174 13. Dez 2005 09:27

Re: Event-Message wenn Datei fertig kopiert
 
Das ganze arbeitet mit der Api-Funktion "ReadDirectoryChangesW".
Da gibt es die Möglichkeit verschiedene Ereignisse zu ermitteln (kopieren, löschen, Attrib geändert, umbenennen...).
Leider nicht explizit "Datei ist fertig" kopiert.

Zu deinem Vorschlag des überprüfens ob die Datei noch benutzt wird...
Meinst du, einfach nach kopieren einer Datei in den Ordner eine Schleife starten und
darin abfragen ob Datei noch in Benutzung ist? Und wenn nicht, dann die Datei verschieben?
Klingt eigentlich plausibel. Einfache Lösung. Darauf bin ich gar nicht gekommen ;) Werds mal ausprobieren.

--> Wie verhält sich das ganze, wenn mehrere Dateien kopiert werden? Werden die Events dann in eine Art Warteschleife eingereiht, oder wird gewartet bis der Thread abgearbeitet wurde?

Danke...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz