Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

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

  Alt 21. Apr 2016, 13: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.
$2B or not $2B

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