Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FindFirst findet nicht alles (https://www.delphipraxis.net/124299-findfirst-findet-nicht-alles.html)

Cosamia 18. Nov 2008 09:27


FindFirst findet nicht alles
 
Hallo zusammen,

ich habe ein kleines Problem mit findfirst. Ich nutze findfirst um ein Importverzeichnis mit Textdateien abzuarbeiten. Soweit funktioniert auch alles bestens. Bis sich der Verzeichnisinhalt in der Zeit der Abarbeitung der Files verändert. Diese neu hinzu gekommenen Files werden von Findfirst einfach ignoriert.
Macht findfirst Anfangs eine Art Momentaufnahme des Verzeichnisses und arbeitet dann diese ab?

turboPASCAL 18. Nov 2008 09:39

Re: FindFirst findet nicht alles
 
Wie schaut denn deine FindFiles-Procedure aus ?

Cosamia 18. Nov 2008 09:41

Re: FindFirst findet nicht alles
 
Delphi-Quellcode:
 mask := IncludeTrailingBackSlash(ImportPath)+'*.*';
  if (findfirst(mask,faAnyFile,Search)=0) then
     repeat
      FileExt := UpperCase(ExtractFileExt(Search.Name));

      {Alle DAT Dateien abfangen}
      if fileext = '.DAT' then begin

      {Abfragen ob beim Import alles klar ging}
      if importdatfile(Search.Name) = 0 then begin
      ZipMaster1.FSpecArgs.Clear;
      ZipMaster1.FSpecArgs.Add(IncludeTrailingBackSlash(ImportPath)+Search.Name);
      ZipMaster1.Add;
      end;
      end;
      until(findNext(Search)<>0);
      {Zipfile schreiben}

  FindClose(Search);

alzaimar 18. Nov 2008 10:04

Re: FindFirst findet nicht alles
 
Es wäre möglich das FindNext gerade die 3.Datei (in irgendeiner Reihenfolge) liefert, die neue Datei aber an 2.ter Stelle eingefügt wird.

Du kannst aber z.B. über ein Shell-Notify-Ereignis auf Änderungen im Importverzeichnis unterrichtet werden.

Alternativ solltest Du entweder die importierten Dateien löschen oder z.B. das Archivbit löschen, um die Datei als "Verarbeitung abgeschlossen" zu markieren. Natürlich verarbeitest Du beim nächsten Scan nur die unmarkierten Dateien.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 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