![]() |
Vista setzt als Datei-Attribut ein Bit13 ???
Hi,
eines meiner WinXP-Programme sucht mittels der FindFirst/FindNext-Funktionen Dateien, welche im SearchRecord-Attribut nur die Bits für faReadOnly und faArchive gesetzt haben dürfen. Bei einem Programm-Transfer auf Vista klappte das Prog jetzt allerdings nicht mehr. Auf der Suche nach der Ursache entdeckte ich dann bei allen Dateien dieses betroffenen Ordners (C:\ProgramData\XY) dieses ominöse Bit13 im SearchRecord-Attribut, ...welches man übrigens auch häufig sonstnoch überall in C:\ProgramData\... antreffen kann. Kennt das event. jemand? Was für eine Information beinhaltet es? Thx im Voraus MfG, ... PS. Ein Bit7 als Datei-Attribut (?) ist mir da übrigens eben auch gerade noch begegnet (in C:\Programme\Canon\...). ...und eben auch noch ein Bit10 in (nur) C: Scheint so, dass diese höheren Bits in Vista insgesamt irgendwie genutzt werden? |
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Ich kenne die zwar nicht, aber kannst du nicht einfach sämtliche bekannten Bits ausmaskieren und dann erst deinen Vergleich durchführen? Dann bist du auch für die Zukunft gewappnet, egal welche Bedeutung dann weitere Bits bekommen.
|
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Zeig mal deine Funktion.
|
Re: Vista setzt als Datei-Attribut ein Bit13 ???
@OregonGhost, ja, wie ich das Phänomen in den Griff kriege, ist aber nicht das eigentliche Problem. Ich wunderte mich nur, dass diese Bits dort überhaupt existieren und frage mich natürlich jetzt, was sie wohl bedeuten...
@Luckie so gings nicht:
Delphi-Quellcode:
procedure loadADir(ADirAndMask : String);
var sr: TSearchRec; begin if FindFirst(ADirAndMask, faAnyFile, sr) = 0 then repeat if (sr.Attr and (faReadOnly or faArchive)) = sr.Attr then AStrList.Add(sr.Name); until FindNext(sr) <> 0; FindClose(sr); end; so gings dann:
Delphi-Quellcode:
...
if FindFirst(ADirAndMask, faAnyFile, sr) = 0 then repeat if (sr.Attr and (faReadOnly or faArchive or (1 shl 13))) = sr.Attr then AStrList.Add(sr.Name); until FindNext(sr) <> 0; ... |
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Moin, Moin,
du verwendest..
Delphi-Quellcode:
muss der Vergleich nicht mit
if (sr.Attr and (faReadOnly or faArchive)) = sr.Attr then ...
Delphi-Quellcode:
durchgeführt werden?!
if (sr.Attr and (faReadOnly or faArchive)) = (faReadOnly or faArchive) then ...
|
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Zitat:
|
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Ähh, was ist jetzt deine Botschaft? Scheinbar oder anscheinend :cyclops:
|
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Nee, das stimmt schon so, es wird ja auf Gleichheit abgefragt.
Delphi-Quellcode:
if (Wert1 and Wert2) = Wert1... //trifft nur zu, wenn beide gleich
if (Wert1 and Wert2) = Wert2... //trifft auch nur zu, wenn beide gleich |
Re: Vista setzt als Datei-Attribut ein Bit13 ???
Botschaft ist, dass es anscheinend nicht mit
Delphi-Quellcode:
durchgeführt werden muss, enthält aber gleichzeitig nen Disclaimer, weil ich diese Nacht nicht geschalfen hab :mrgreen:
if (sr.Attr and (faReadOnly or faArchive)) = (faReadOnly or faArchive)
|
Re: Vista setzt als Datei-Attribut ein Bit13 ???
jooo, überzeugt :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz