AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verständnisfrage zu fdoForceFileSystem
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage zu fdoForceFileSystem

Ein Thema von Guido Eisenbeis · begonnen am 1. Jan 2020 · letzter Beitrag vom 2. Jan 2020
Antwort Antwort
Seite 1 von 2  1 2      
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#1

Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 05:15
Es geht um den TFileOpenDialog, dem man Options mitgeben kann, z. B. fdoForceFileSystem. Dazu wird in der Hilfe und im INet geschrieben:

fdoForceFileSystem - Zurückgegebene Einträge müssen Einträge des Dateisystems sein.

Vielleicht stehe ich auf dem Schlauch, aber was sind Einträge des Dateisystems?

Hintergrund ist, dass es ein Dialog zum Auswählen von Ordnern ist (fdoPickFolders) und ich herausfinden will, ob die o. g. Option sinnvoll ist.
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 09:52
Die Frage ist eher "Was sind nicht Einträge des Dateisystems"?

Das hier gibt ein Beispiel:
https://stackoverflow.com/q/47086367

(Delphis fdoForceFileSystem ist das Gegenstück zu Windows FOS_FORCEFILESYSTEM )
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 18:14
Hallo Der schöne Günther. Die verlinkte Seite habe ich durchgelesen.
Zitat von Der schöne Günther;1454221(Delphis [DELPHI:
fdoForceFileSystem[/DELPHI] ist das Gegenstück zu Windows FOS_FORCEFILESYSTEM )
Wenn du meintest "Delphis fdoForceFileSystem ist das Gegenstück die Entsprechung zu Windows FOS_FORCEFILESYSTEM " und ich das richtig verstehe, meint "Einträge des Dateisystems" quasi -echte- Pfade. Also im Umkehrschluss wären Nicht-Einträge-des-Dateisystems virtuelle Pfade, z. B. Bibliotheken in Win7, virtuelle LWs, Hardlinks, SUBST-Ordner, usw.

Habe ich das richtig verstanden?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 18:31
Hartlinks, Subst usw. sind auch "echte" Pfade.

Einfach gesagt ist es alles was dem Schema C:\irgendwas\... entspricht (inkl. dem, was via UNC referenzierbar wäre),
also keine Netzwerkfade oder so virtuelle Pfade wie Desktop, Bibliotheken, Computer, Systemsteuerung (siehe Explorer).

Und ja, das können auch Links auf Netzlaufwerke sein, wenn sie z.B. via Subst als "Verzeichnis" in einer Partition gemappt wurden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 19:57
Hallo himitsu.

Das verwirrt mich noch mehr. UNC-Pfade sind doch Netzwerkpfade, oder nicht!?

Könntest du das bitte anders beschreiben? Ich gehe mit gutem Beispiel voraus und formuliere meine Frage um: Was sind Einträge des Dateisystems und was nicht?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 20:54
Wenn sich der UNC-Pfad auf ein lokales Verzeichnis bezieht, dann gibt es einige Funktionen, welche den auflösen und dann ist es wieder ein Pfad im lokalen Dateisystem.
Also ja, UNC ist ein Netzwerkpfad, aber es kommt dann drauf an wer ihn wie verwendet.

Alles was sich direkt auf etwas in einer lokalen "Partition" bezieht und mit X:\ beginnt, also über einen lokal installierten Dateisystemtreiber läuft, entspricht diesem lokalen "Dateisystem" (ForceFileSystem).
RAM-Laufwerke und andere virtuelle Laufwerke einbezogen.

Dieser Dialog arbeitet mit IShellItem und dort kann man auch mit virtuellen "Verzeichnissen" arbeiten, welche ihre Daten aus anderen Quellen beziehen.
Beispiele sind sowas wie Desktop, Netzwerk, Bibliotheken, Computer, Systemsteuerung
oder z.B. die ZIP-Folder, wo der Explorer/ÖffnenDialog den Inhalt von ZIP-Dateien als "virtuelles" Unterverzeichnis anzeigt.


Im Großen und Ganzen braucht man an diesen Optionen nicht rumzuspielen, da die meißten Dateifunktionen mit fast Allem zurecht kommen, außer
* Einschränkung auf Verzeichnisse (Dateien ausblenden), um den Dialog zur Verzeichnisauswahl zu benutzen (wesentlich intuitiver und einfacher als die anderen FolderDialoge)
* FolderExists- und FileExists-Checks beim Öffnen, um nachträglich nicht extra prüfen zu müssen
* FileCreateTest ... nja, hier muß man aufpassen, bei WriteOnly-Verzeichnissen, also den am Besten erst beim nachfolgenden FileCreate/Open abfangen (Fehlerprüfung beim Erstellen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Jan 2020 um 21:41 Uhr)
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 21:13
Wow, ein recht kompliziertes Thema, das wirklich nicht einfach zu erklären ist!

@himitsu

Vielen Dank für die gute Erklärung! Zwar knickt und knackt es in meinem Gehirn immer noch, aber ich bin der Sache nun etwas mehr auf der Spur.

Wie sieht das für meinen anfangs erwähnten Dialog zum Auswählen von Ordnern (TFileOpenDialog) aus? Ist fdoForceFileSystem für irgendwas sinnvoll? Bei meinen Tests kann ich keinen Unterschied feststellen, ob mit oder ohne fdoForceFileSystem. (Win 10 x64, Delphi 10.3)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 1. Jan 2020, 22:36
Es kommt drauf an.
Ordnerauswahl für einen Schreibzugriff ausschließlich auf lokale Pfade, da könnte fdoForceFileSystem nicht schaden. (Lesen geht fast immer, aber schreiben eventuell nicht ... siehe HTTP)

Ich persönlich hab diese Option noch nie benutzt und es gab bissher auch noch keine Probleme.

ofPathMustExist aktiviere ich eigentlich immer. (neue Verzeichnisse müssen dann vorher explizit erstellt werden, was in dem Dialog ja auch geht)
Für Öffnendialoge ist ofFileMustExist immer aktiv, weil die Datei muß ja sowieso existieren und der Fehler wird sofort gemeldet.
Bei Speicherndialogen nutze ich machmal ofOverwritePrompt, damit der Nutzer nicht irgendwas "ausversehn" bzw. unbemerkt überschreibt. (es sei denn Überschreiben ist das Standardverhalten)

ofNoTestFileCreate ist auch nahezu immer gesetzt, denn muß man bei WriteOnly-Laufwerken beachten, was z.B. auch auf ein Netzlaufwerk zum NAS zutrifft oder ganz speziell auf WORM, welche eine Versionierung vornimmen.
(bei ofNoTestFileCreate erstellt und löscht der Dialog die Datei einmal, was blöd endet, wenn sich die Datei nicht mehr löschen oder verändern lässt
und auch im Log tauchen dann unnötige Zugriffe auf)


Wie gesagt, meistens wird fdoForceFileSystem nicht benötigt. Es wäre auch etwas hinderlich, wenn man Netzwerkpfade erlauben möchte.
MSDN-Library durchsuchenCreateFile, TFileStream, LoadFromFile usw. kommen mit sehr ... sehr viel zurecht, wie UNC und sogar FTP, HTTP usw. wurde von Microsoft implementiert.

Ich weiß nicht mehr wie, aber man kann in diesem Dialog auch Drucker und Scanner auflisten lassen.
Beim Speichern einer Datei würde es mit soeinem Pfad eventuell ein paar Probleme geben.

Falls du mit IShellItem und dessen API und Stream-Zugriffen arbeitest, dann kann praktisch alles verwendet werden.
.FileName -> .ShellItem
.Files -> .ShellItems

Aber standardmäßig listet dieser Dialog sowieso nur Dinge auf, zu denen es einen schönen Pfad im Dateisystem gibt, welcher sich über .FileName auslesen und mit den meisten FileAPIs verwenden lässt.
Deswegen bemerkst du bei deinen Tests wohl auch keinen Unterschied.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Jan 2020 um 22:45 Uhr)
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 2. Jan 2020, 01:24
Aber standardmäßig listet dieser Dialog sowieso nur Dinge auf, zu denen es einen schönen Pfad im Dateisystem gibt, welcher sich über .FileName auslesen und mit den meisten FileAPIs verwenden lässt.
Deswegen bemerkst du bei deinen Tests wohl auch keinen Unterschied.
Somit lasse ich fdoForceFileSystem beim Aufruf weg. Danke bis hierhin!

Du hast einen wichtigen Punkt angesprochen: ofNoTestFileCreate (besser gesagt: Testen auf Schreibrechte ist gewünscht).

Wie du dir wohl schon aus meinen beiden Threads zusammengereimt hast, kann der User mit meinem Programm einen Ziel-Ordner auswählen (TFileOpenDialog, fdoPickFolders), in den dann Dateien und Unter-Ordner kopiert werden. Dazu wäre ist es notwendig, Schreibrechte im Ziel-Ordner zu haben. Kann man das gleich mit dem TFileOpenDialog prüfen? Gibt es vielleicht ein Flag, mit dem nur Ordner mit Schreibrecht ausgewählt werden können? Falls nicht, mache ich dafür einen anderen Thread auf (falls ich's nicht selbst rausfinde).

Wichtig: Schreibrecht ist mit normalen User-Rechten gemeint, also ohne Admin-Rechte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verständnisfrage zu fdoForceFileSystem

  Alt 2. Jan 2020, 01:56
Ich wusste es doch.
Hatte es anfangs auch andersrum geschrieben und dacht mir dann, andersrum klingt es richtiger. (nächstes Mal am Vortag weniger saufen)

Ich weiß allerdings nicht, ob das TestFileCreate auch bei der Ordnerauswahl gemacht wird.
Müsste man mal nachsehn, ob und mit welchem Dateinamen. (beim Speicherndialog ist es der Name der eingegebenen Datei)

Zugriffsrechte selbst werden vom Dialog nicht geprüft. Allerdings besteht die Möglichkeit über Events auf die Dateiauswahl/-eingabe zu reagieren und vor dem OK zu prüfen.
Wobei ich es inzwischen aufgegeben hab Rechte detailiert zu prüfen, da ich dabei garantiert irgendwas vergesse und die Prüfung falsche Ergebnisse liefert ... hier einfach die Datei öffnen/speichern und wenn es knallt, dann die passende Fehlermeldung.
Die Leseberechtigung der übergeordneten Verzeichnisse werden indirekt geprüft, da sich die Verzeichnisse dann nicht öffnen und somit untergeordnete Dateien/Verzeichnisse nicht auswählen lassen. (Eingeben kann man aber alles, inkl. Pfad unten im Edit ... darum hab ich auch immer das ofPathMustExist aktiv)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Jan 2020 um 02:04 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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