![]() |
Prüfen ob Datei frei zum weiterverarbeiten : gelöst
Hallo zusammen
ich entwickle zur Zeit gearade ein kleines Programm dass mir ein bestimmtes Verzeichnis im Sekundentakt überwacht. In dieses Verzeichnis wird von einem Scanner ein Multipage TIF File gestellt dass dann von diesem Programm in einzelne TIF Files zerlegt und als seperate Datei je TIF Seite abgespeichert wird. Schön und gut funktioniert auch. Aber :wall: mein Programm scannt das Verzeichnis mit TSearchRec nach allen *.TIF Files wenn mein Programm bereits läuft wenn der Scanner das Multipage TIF File erzeugt wartet mein Programm nicht ab ob der Scanner den Vorgang beendet hat mit anderen worten es werden bereits nach der ersten seite die Unterroutinen meines Progs abgearbeitet bei der das Ursprüngliche TIF zum schluss sogar umbenannt wird und der scanner fängt dadurch ein neues TIF an. Zur Zeit prüfe ich ob mein Prog die Datei die der Scanner erzeugt umbenennen darf was komischerweise erlaubt wird :gruebel:. :!: ich müsste also überprüfen ob die Datei die ich mit TSearchrec gefunden habe von keiner anderen Anwendung mehr benötigt oder verarbeitet wird. für alle Lösungsvorschläge bin ich dankbar |
Re: Prüfen ob Datei frei zum weiterverarbeiten
Moin etom,
versuch' doch die Datei zum Schreiben zu öffnen. Ich vermute mal, dass das, für den Fall das die Datei noch aufgebaut wird, fehlschlägt. |
Re: Prüfen ob Datei frei zum weiterverarbeiten
danke für die Antwort
meinst du mit der fileopen methode ?? |
Re: Prüfen ob Datei frei zum weiterverarbeiten
|
Re: Prüfen ob Datei frei zum weiterverarbeiten
Delphi-Quellcode:
hab mit folgendem code versucht zu prüfen ob die datei bereits fertiggestellt ist obwohl der scanner noch fleissig die seiten hinzufügt verarbeitet mein prog sofort wenn das tif vom scanner angelegt wird die Seiten :wall:
function FileInUse(FileName: string): Boolean;
var hFileRes: HFILE; begin Result := False; if not FileExists(FileName) then Exit; hFileRes := CreateFile(PChar(FileName), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Result := (hFileRes = INVALID_HANDLE_VALUE); if not Result then CloseHandle(hFileRes); end; hab schon daran gedacht die dateigrösse zu speichern und nach einiger zeit zu prüfen ob sich die grösse verändert hat aber wäre froh wenn es mit weniger programmieraufwand ginge :gruebel: |
Re: Prüfen ob Datei frei zum weiterverarbeiten
:-D
habs hinbekommen frage mit folgendem code das Letzte Änderungsdatum der Datei ab die vom Scanner erstellt wird wenn das Änderungsdatum nicht um über 1 minute kleiner ist als now wird die Datei übergangen
Delphi-Quellcode:
procedure THauptForm.Timer1Timer(Sender: TObject);
var i : Integer; LSrch: TSearchRec; DirScanEing : String; DatzuVerarb : String; begin VrProgressBar1.Position:=VrProgressBar1.Position+1; if VrProgressBar1.Position >= 100 then VrProgressBar1.Position:=1; Timer1.Enabled:=False; DirScanEing := leseRegValue('ScannerEingang')+'\'; i := FindFirst(DirScanEing + '*.tif', faAnyFile, LSrch); try while i = 0 do if (LSrch.Attr and faDirectory) = 0 then begin VerzLauf:=0; (* Überprüfen ob Datei frei ist nicht in Verwendung von anderem Prg Abfrage des Änderungsdatums weitere Operationen nur wenn Änderungsdatum < ist wie jetzt mit 1min 5sec *) if FileDateToDateTime(LSrch.Time) < (Now-0.00075) then begin ..... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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