Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prüfen ob Datei frei zum weiterverarbeiten : gelöst (https://www.delphipraxis.net/23472-pruefen-ob-datei-frei-zum-weiterverarbeiten-geloest.html)

etom291272 3. Jun 2004 18:24


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

Christian Seehase 3. Jun 2004 18:26

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.

etom291272 3. Jun 2004 18:28

Re: Prüfen ob Datei frei zum weiterverarbeiten
 
danke für die Antwort

meinst du mit der fileopen methode ??

Christian Seehase 3. Jun 2004 18:30

Re: Prüfen ob Datei frei zum weiterverarbeiten
 
Moin etom,

damit müsste das auch gehen.
Oder aber z.B. Hier im Forum suchenCreateFile

etom291272 3. Jun 2004 19:33

Re: Prüfen ob Datei frei zum weiterverarbeiten
 
Delphi-Quellcode:
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 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:
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:

etom291272 3. Jun 2004 21:28

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