Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: IsFileInUse : Ergebnis unterschiedlich im Admin-Modus

  Alt 19. Aug 2015, 00:37
Nichts ist älter als der Status von eben

Eben war die datei noch zu öffnen und jetzt, wo du sie öffnen möchtest, ist die gerade gesperrt worden.

Das einfachste ist, die Datei direkt zu öffnen und auf entsprechende Fehler/Exceptions zu reagieren (z.B. x mal versuchen und dann erst mit der Exception abbrechen).

Was du jetzt machst ist die Datei zu öffnen und wieder zu schliessen um diese dann wieder zu öffnen ...

Und eine Datei, die nicht existiert, bekommst du mit den Parametern nicht geöffnet, somit ist der Parameter CheckIfExists irgendwie unnütz.
Dass die Datei existiert, weiß ich schon wenn ich die CanOpenFile-Funktion aufrufe, will es daher in dieser Funktion nicht noch einmal prüfen (wenn man die Funktion 100.000 mal aufruft, kann das schon zeitlich was ausmachen).

Die Prüfung (ob man die Datei öffnen kann) hatte ich wohl (ist schon ein paar Jahre her) vermutlich eingeführt, weil es anscheinend zu größeren Problemen kommen konnte, wenn man versucht eine gesperrte Datei zu öffnen / oder weil es sich dann zeitlich spürbar verschlechterte.

Grundsätzlich versuche ich es immer so zu machen, dass die Frage, ob etwas geht oder nicht, möglichst nicht mit dem Auslösen einer Exception geklärt wird.

Muss ich mir im vorliegenden Fall aber noch mal überlegen. Ist ja eher unwahrscheinlich, dass die zu durchsuchenden Dateien gesperrt sind, insofern könnte das "doppelte" öffnen tatsächlich mehr Zeit kosten, als der (evtl.)" Wurf von einigen Exceptions.

If ( CheckIfExists = true ) and ...
Warum nicht viel lesbarer if CheckIfExists and ... ?
Jupp, das war ein Rest von was anderem, ist schon weg
  Mit Zitat antworten Zitat