Seite 1 von 1

Datei-Attribute in PB

Verfasst: 05.11.2008 15:20
von Regenduft
Challö zusammen,

Ich bin mir plötzlich nicht mehr 100%ig sicher, wie in PureBasic Attribute gehandhabt werden. Grund dafür ist #PB_FileSystem_Normal.
PB-Doku hat geschrieben:Auf Windows sind die Attribute eine Kombination der folgenden Werte:
#PB_FileSystem_Hidden : Datei ist versteckt
#PB_FileSystem_Archive : Datei wurde archiviert und seit dem letzten Mal nicht geändert
#PB_FileSystem_Compressed : Datei ist komprimiert
#PB_FileSystem_Normal : Normale Attribute
#PB_FileSystem_ReadOnly : Datei ist im "ReadOnly" Modus (schreibgeschützt)
#PB_FileSystem_System : Datei ist eine Systemdatei
Soweit so gut... aber... wieso ist #PB_FileSystem_Normal ein eigenes Flag? :o (oder eine eigene Flag...)

Code: Alles auswählen

Debug "#PB_FileSystem_ReadOnly"
Debug RSet(Bin(#PB_FileSystem_ReadOnly), 32, "0")
Debug "#PB_FileSystem_Hidden"
Debug RSet(Bin(#PB_FileSystem_Hidden), 32, "0")
Debug "#PB_FileSystem_System"
Debug RSet(Bin(#PB_FileSystem_System), 32, "0")
Debug "#PB_FileSystem_Archive"
Debug RSet(Bin(#PB_FileSystem_Archive), 32, "0")
Debug "#PB_FileSystem_Normal"
Debug RSet(Bin(#PB_FileSystem_Normal), 32, "0")
Debug "#PB_FileSystem_Compressed"
Debug RSet(Bin(#PB_FileSystem_Compressed), 32, "0")
Der "Normalfall" ist doch eigentlich auch nur eine Kombination verschiedener Flags... oder? :?

Re: Datei-Attribute in PB

Verfasst: 05.11.2008 16:36
von Little John
Regenduft hat geschrieben:Der "Normalfall" ist doch eigentlich auch nur eine Kombination verschiedener Flags... oder? :?
Es geht hier nicht um den "Normalfall". Mit diesem Begriff verbindet man persönliche Assoziationen und Erfahrungen aus dem eigenen Leben, wobei verschiedene Leute durchaus unterschiedliche Vorstellungen davon haben, was das sei. Die Frage "Was ist normal?" lassen wir an dieser Stelle also besser außen vor. ;-)

Es geht hier darum, wie das Dateiattribuit "Normal" definiert ist. Dabei ist "Normal" nur ein Name, man hätte dafür ebensogut "Kuckuck" oder sonstwas nehmen können. Das Dateiattribut "Normal" war bei Microsoft noch nie eine Kombination verschiedener Flags, wie kommst Du darauf? Das Gegenteil ist richtig! Dateiattribut "Normal" bedeutet Abwesenheit aller anderen Attribute.
Bei DOS wurde dafür, soweit ich mich entsinne, der Wert 0 gewählt. Bei Windows gibt es dafür ein eigenes Flag, das aber auch nur dann gültig ist, wenn keine anderen Flags gesetzt sind:
http://msdn.microsoft.com/en-us/library/cc205789.aspx hat geschrieben:This attribute is valid only when no other flags are set. This flag SHOULD NOT be used with other flags and MUST be ignored if other flags are set.
Gruß, Little John

Verfasst: 05.11.2008 16:52
von Regenduft
Danke für die flotte und detailierte Antwort!
Little John hat geschrieben:Bei DOS wurde dafür, soweit ich mich entsinne, der Wert 0 gewählt.
:lol: Das meine ich mit:
Regenduft hat geschrieben:Der "Normalfall" ist doch eigentlich auch nur eine Kombination verschiedener Flags... oder?
Damit meinte ich die Abwesenheit jeglicher anderer Flags. Hatte ich mich wohl etwas blöd (um nicht falsch zu sagen) ausgedrückt. :roll:

Verfasst: 07.11.2008 19:15
von Regenduft
uiuiui... da gibts ja noch mehr "seltsame" Attribute! Ist ja fast peinlich, aber ich habe mich seit Amiga-Zeiten nichtmehr mit sowas beschäftigt. :oops: Da ergeben sich neue Fragen...

Wegen der Übersichtlichkeit nehme ich mal die Win- anstatt der PB-Konstanten.

Klar sind (...glaube ich):

Code: Alles auswählen

#FILE_ATTRIBUTE_READONLY -> schreibgeschützt
#FILE_ATTRIBUTE_HIDDEN -> versteckt
#FILE_ATTRIBUTE_SYSTEM -> Systemdatei
#FILE_ATTRIBUTE_DIRECTORY -> Verzeichnis
#FILE_ATTRIBUTE_ARCHIVE -> archiviert
#FILE_ATTRIBUTE_NORMAL -> ...kein Kommentar
#FILE_ATTRIBUTE_TEMPORARY -> temporär
#FILE_ATTRIBUTE_COMPRESSED -> gepackt/komprimiert
#FILE_ATTRIBUTE_ENCRYPTED -> verschlüsselt/codiert
Ein absolutes Rätsel hingegen:

Code: Alles auswählen

#FILE_ATTRIBUTE_SPARSE_FILE -> sparsame Datei???
#FILE_ATTRIBUTE_REPARSE_POINT -> vielleicht ein "Link"???
#FILE_ATTRIBUTE_OFFLINE -> nicht sofort verfügbar... aber warum? Weil's online ist??? :freak:
Auch ein Rätsel und in PB nicht verfügbar sind:

Code: Alles auswählen

#FILE_ATTRIBUTE_DEVICE -> einfach nur reserviert???
#FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -> nicht von Indexdienst indexiert? FSK6? :lol:
Und *hüst* gibt's da Unterschiede zwischen FAT12, FAT32 und NTFS?

Für eine Schließung meiner peinlichen Wissenslücken wäre ich dankbar <)
...und mogen Linux- und übermorgen Mac-Attribute :lol: :wink:

Verfasst: 08.11.2008 01:57
von Regenduft
Wenn mir keiner antworten will, dann führe ich halt Selbstgespräche. :wink:

Ich hab' mal eine kleine Rountine geschrieben und alle meine Partitionen auf das vorkommen der diversen Attribute durchsucht.
Ich war... naja... überrascht...

Folgende Attribute waren kein einziges mal gesetzt:

Code: Alles auswählen

#FILE_ATTRIBUTE_TEMPORARY
#FILE_ATTRIBUTE_COMPRESSED
#FILE_ATTRIBUTE_ENCRYPTED
#FILE_ATTRIBUTE_OFFLINE
Da ich nichts verschlüsselt oder komprimiert habe (via Kontextmenü Eigenschaften > (Attribute)Erweitert... > Inhalt verschlüsseln, bzw. Inhalt komprimieren) war ich bei #FILE_ATTRIBUTE_COMPRESSED und #FILE_ATTRIBUTE_ENCRYPTED nicht überrascht. Bei #FILE_ATTRIBUTE_TEMPORARY allerdings schon! Ist das sozusagen ein "ungenutztes Feature"? (oder waren sie nur schon wieder "verschwunden" bevor ich sie durchsucht hatte?)

#FILE_ATTRIBUTE_TEMPORARY und #FILE_ATTRIBUTE_OFFLINE konnte ich manuell mit SetFileAttribute() setzen. Bei #FILE_ATTRIBUTE_SPARSE_FILE und #FILE_ATTRIBUTE_REPARSE_POINT ging das nicht.

Hat nicht wenigstens jemand 'nen schönen Link? :praise:
... Echo! ... echo ... echo ...
Ihr seid doch sonst immer so schnell. :cry:

Verfasst: 08.11.2008 02:16
von STARGÅTE
naja es antwortet vermutlich keine, weil ich zB nicht mal n Frage sehe ?

Was willst du eigentlich ?

Wenn du eine Beschreibung der Konstanten willst, einafch in Google reinschmeißen und den 1. oder 2 Link klicken ...

Verfasst: 08.11.2008 03:23
von Regenduft
:lol: Ich schreibe wohl zu viel Wirrwarr...

Dann nochmal ganz direkt (und reduziert):

Was bedeuten folgende Attribute und warum werden sie scheinbar von niemandem genutzt? :

Code: Alles auswählen

#FILE_ATTRIBUTE_TEMPORARY
#FILE_ATTRIBUTE_OFFLINE
#FILE_ATTRIBUTE_SPARSE_FILE
#FILE_ATTRIBUTE_REPARSE_POINT
Und (neue Fragen):
  • Was ist (praktisch gesehen) ein Reparse Point?
  • Kann man mit Sparse Files unter XP und mit PB überhaupt arbeiten?
Habe schon Google und die M$ SDK Doku befragt, aber keine konkreten Antworten erhalten. (oder ich raff's einfach nicht...)
Habe Zitate gefunden wie "Fehler bei der Implemeniterung von Sparse Dateien machen diese unbrauchbar" oder "da die WinAPI vor Sparse Files und Reparse Points entstanden ist werden diese nicht unterstützt". Und das Temporär-Flag macht ja prinzipiell Sinn, aber wenn es keiner nutzt... Bin ich einfach zu blöd für das ganze Thema?
Je mehr ich mich damit Beschäftige desto mehr erhalte ich den Eindruck das nur "die guten alten Flags" (RAHS) wirklich Sinn machen, bzw. einen reelen Nutzen bieten. Compressed vielleicht auch noch, aber der Rest... :?