Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.159 Beiträge
 
Delphi 12 Athens
 
#7

AW: FindFirst/FindNext auf Samba-Server findet nicht alle

  Alt 21. Apr 2016, 12:19
Im Ideal gäbe es einen "Befehl", mit dem man dem SMB-Treiber sagen kann, er solle der/die/das Cache aktualisieren, welchen man vor dem Auflisten ausführt.

Oder mal so probieren. (auch wenn es nicht die zuverlässigste/beste Lösung ist)
Delphi-Quellcode:
First := True;
repeat
  if First then begin
    Count := -1;
    First := False;
  end else
    Count := FileList.Count;
  FileList.Clear;
  ErrorCode := FindFirst(FileName, faAnyFile, SR);
  if ErrorCode = S_OK Then begin
    try
      repeat
        FileList.Add(SR.Name);
        ErrorCode := FindNext(SR);
        if ErrorCode <> ERROR_NO_MORE_FILES then
          RaiseLastOSError(ErrorCode);
      until ErrorCode = S_OK;
    finally
      FindClose(SR);
    end;
  end else if (ErrorCode <> ERROR_FILE_NOT_FOUND) and (ErrorCode <> ERROR_PATH_NOT_FOUND) then
    RaiseLastOSError(ErrorCode);
  Sleep(500);
until FileList.Count = Count;
Vielleicht noch mit einem Limit an Loops, falls man auf ein sich ständig veränderndes Verzeichnis trifft.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Apr 2016 um 12:46 Uhr)
  Mit Zitat antworten Zitat