Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Dateiattributensalat (https://www.delphipraxis.net/197406-dateiattributensalat.html)

MicMic 4. Aug 2018 14:24

Dateiattributensalat
 
Hallo,
entweder verstehe ich es nicht oder Windows macht mal wieder halbe Sachen.
Die Attribute für den Netzwerk-Bereich, sprich "O", "P" und "U" können zusammen gesetzt werden.

O = Offline
P = Angeheftet
U = Losgelöst

Also mit "attrib" kann man eine Datei auf PU, oder OPU setzen.
Also P und U widerspricht sich doch?

Es gibt ja folgende Möglichkeiten:
(O) (P) (U) (OP) (OU) (OPU) (PU) (leer)

Ich frage mich natürlich, welchen Zustand diese 8 Möglichkeiten bedeuten.
Weiterhin ist "P" schlecht gewählt, da es auch Sparse-Dateien gibt, die mit dem "P"-Flag gekennzeichnet werden.

Michael

KodeZwerg 4. Aug 2018 20:22

AW: Dateiattributensalat
 
Du solltest tunlichst Vermeiden solche Attribute selbst setzen zu wollen.
Ein paar Anregungen welche Attribute offiziell existieren findest Du hier.
Zitat:

FILE_ATTRIBUTE_OFFLINE
4096 (0x1000)
The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage. This attribute is used by Remote Storage, which is the hierarchical storage management software. Applications should not arbitrarily change this attribute.
Ansonsten Empfehle ich Dir, Dich an die TFileAttribute zu halten.

Es kann natürlich auch sein das Du etwas völlig anderes meinst, dann tut es mir Leid.

MicMic 4. Aug 2018 21:05

AW: Dateiattributensalat
 
Mir geht es eher darum, zu verstehen das dies überhaupt möglich ist (das gleichzeitige setzen von P und U).
Windows muss (oder sollte) sich dabei ja etwas gedacht haben. Deshalb meine Frage dazu denn vielleicht verstehe ich es ja nicht.

Wenn meine Anwendung auf Attribute reagieren (das soll sie) oder Attribute ändern soll, dann prüfe ich auch Fehlerquellen/Möglichkeiten etc. Ähnlich wie wenn man seine Anwendung auch auf verschiedene Auflösungen testet und schauen möchte ob alle Breiten/Höhen stimmen. So schaue ich nun auch auf die Attribute. Für eine Sortierung, für eine Ansicht, für eine Beschreibung und ein paar für eine Änderung.

FILE_ATTRIBUTE_... kenne ich zu 99%

Übrigens sind die beiden Attribute noch nicht in Delphi drin und auf der MS-Webseite noch nicht beschrieben.

FILE_ATTRIBUTE_UNPINNED = $00100000;
FILE_ATTRIBUTE_PINNED = $00080000;

Wird wohl irgendwann kommen

Michael

himitsu 4. Aug 2018 21:46

AW: Dateiattributensalat
 
Erstmal sollte man bedenken, dass es nur begrenzte 32 Bit gibt,
dann sind einige Attribute auch nicht immer "vorhanden", bzw. nur in Verbindung mit Anderen gültig ... sie sind also frei, wenn das andere Attribut nicht gesetzt ist ... können also mehrfach verwendet werden.


Dass pinned und unpinned gleichzeitig aktiv sind, könnte auch richtig sein, z.B. für den Zustand wo eine datei nicht lokal, sondern nur in der Cloud liegen (lokal ist nur die Dateiinformation ohne Inhalt)

* Datei ganz normal lokal
* Dateilink ins Netzwerk, aber grade offline
* Datei in Cloud und mit lokaler Kopie
* Datei nur in Cloud, ohne lokale Kopie

Ich vermute jetzt einfach mal, dass die Clout kein Sparse unterstützt, womit dieses Attribut dort frei wäre und für was Anderes genutzt werden könnte.



Na ja, da niemand ständig guckt, was sich ändert, da dauert es immer etwas, bis Neues in der Pascalübersetzung auftaucht, aber dur darfst auch gern sowas Melden nach einfügen lassen. (alternativ zu fremden Headerübersetzungen, wie z.B. von den JEDIs)
C-Sprachen haben es da einfacher, da sie oftmals direkt gegen die "originalen" Windows-Header kompilieren, wärend für Delphi es immer erst übersetzte Kopieen braucht.
Schade eigentlich, denn Embarcaderos C++Builder kann C++-Header UND Delphi-Units einbinden, während Delphi leider eben keine C++-Dateien direkt einbinden kann. :cry:

MicMic 5. Aug 2018 15:11

AW: Dateiattributensalat
 
Danke für die Infos.
Im Internet sind jedenfalls einige auch etwas verwirrt, bezüglich den Attributen.
(ich lese hier und da englisches und übersetzte es mir immer mit dem Google Übersetzer *g)

Die Sparse-Dateien sind aber im Netzwerk möglich. Das hatte ich getestet aber mir fällt gerade ein, dass ich dies nur im Offline-Modus getestet habe. Da muss ich noch mal schauen...

Aber zum Thema Netzwerk. Da bin ich noch ne Niete. Ich habe einfach mal meine Fritz.Box eingerichtet (zum testen). Da habe ich dann etwas mit "FRITZ-NAS". Ob hier das Thema mit den Attributen für alle Netzwerke gilt? Es gibt ja OneDrive und diese und jene Dienste. Diese beiden neuen Flags (Pinned/Unpinned) wurden ja wegen OneDrive hinzugefügt. Aber es sind Attribute fürs ganze System. Im Explorer werden diese in meinem FRITZ-NAS auch abgefragt/gesetzt. Also denke ich, es gilt dann bei jedem Netzwerk so.

Zu den Flags wird jedenfalls oft von "+P -U" oder "-P +U" geschrieben. Auch las ich inzwischen (eine Meinung) das andere Möglichkeiten ungültig zu betrachten sind.
Es gibt auch noch "FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS", was zum ganzen Thema dazugehört. Also eigentlich vier Attribute:

FILE_ATTRIBUTE_PINNED
FILE_ATTRIBUTE_UNPINNED
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS

Damit kann man (muss man aber nicht) dann rumspielen und Attribute nach belieben setzen. Hier und da macht's dann aber wohl kein Sinn. Je nach dem wie man die Attribute für seine Anwendung nutzen möchte, muss man halt darüber etwas Infos haben. Sonst steht dann evtl. "Die Datei ist nur Online und immer lokal verfügbar" :)

Michael


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