Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vista setzt als Datei-Attribut ein Bit13 ??? (https://www.delphipraxis.net/116567-vista-setzt-als-datei-attribut-ein-bit13.html)

r29d43 2. Jul 2008 09:01


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?

OregonGhost 2. Jul 2008 09:03

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.

Luckie 2. Jul 2008 09:06

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Zeig mal deine Funktion.

r29d43 2. Jul 2008 09:12

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;
...

taaktaak 2. Jul 2008 09:31

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Moin, Moin,

du verwendest..
Delphi-Quellcode:
if (sr.Attr and (faReadOnly or faArchive)) = sr.Attr then ...
muss der Vergleich nicht mit
Delphi-Quellcode:
if (sr.Attr and (faReadOnly or faArchive)) = (faReadOnly or faArchive) then ...
durchgeführt werden?!

Namenloser 2. Jul 2008 10:16

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Zitat:

Zitat von taaktaak
Moin, Moin,

du verwendest..
Delphi-Quellcode:
if (sr.Attr and (faReadOnly or faArchive)) = sr.Attr then ...
muss der Vergleich nicht mit
Delphi-Quellcode:
if (sr.Attr and (faReadOnly or faArchive)) = (faReadOnly or faArchive) then ...
durchgeführt werden?!

Bin das ganze mal kurz im Kopf durchgegangen, scheint beides zu funktionieren. (und gleich kommt einer und beweist mir, dass es nicht so ist, ich weiß es :mrgreen:)

taaktaak 2. Jul 2008 10:23

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Ähh, was ist jetzt deine Botschaft? Scheinbar oder anscheinend :cyclops:

DeddyH 2. Jul 2008 10:26

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

Namenloser 2. Jul 2008 10:27

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Botschaft ist, dass es anscheinend nicht mit
Delphi-Quellcode:
if (sr.Attr and (faReadOnly or faArchive)) = (faReadOnly or faArchive)
durchgeführt werden muss, enthält aber gleichzeitig nen Disclaimer, weil ich diese Nacht nicht geschalfen hab :mrgreen:

taaktaak 2. Jul 2008 10:32

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
jooo, überzeugt :oops:

Cyf 2. Jul 2008 11:58

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Zitat:

Zitat von DeddyH
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

Delphi-Quellcode:
if(not(Wert1 xor Wert2)) then...
:wink:

DeddyH 2. Jul 2008 12:03

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Kürzer (hätte man sowieso machen können meiner Meinung nach):
Delphi-Quellcode:
if Wert1 = Wert2...

Cyf 2. Jul 2008 12:06

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
[OOT]Dachte ich mir auch, aber so kanns ja jeder. :lol:

himitsu 2. Jul 2008 12:17

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
ist das zufällig dieses komische "L"-Bit, welches ich überall im Explorer seh?

(hab mich auch schon etwas gewundert, was dieses soll :shock: )

MagicAndre1981 2. Jul 2008 12:36

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
ist es vll das FILE_ATTRIBUTE_NOT_CONTENT_INDEXED "N" Attribute oder ist das wieder ein neues :gruebel:

das L Attribut sind wohl symbolische Links

r29d43 2. Jul 2008 13:06

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ob L-Attrb oder N-Attrb kann man mit dem Mini-Tool (Anhang), das ich gestern zum Zwecke dieser Attribut-Untersuchung schnell noch geschrieben habe, gut feststellen: Damit einfach die Datei (mit dem fraglichen L-Bit o. N-Bit) doppelklicken und das Anzeige-Ergebnis danach mit dem im Explorer vergleichen.


BTW, wie schaff ich es eigentlich, dass die Datei-Attribute im Explorer mit angezeigt werden? Ist bei mir nämlich leider nicht der Fall.

DeddyH 2. Jul 2008 13:12

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
Ich weiß nicht, ob es unter Vista auch noch so geht, aber mit einem Rechtsklick auf die Titelleiste der Explorer-Listview kannst Du Dir unter XP die anzuzeigenden Eingenschaften aussuchen.

r29d43 2. Jul 2008 13:54

Re: Vista setzt als Datei-Attribut ein Bit13 ???
 
ja klappt, thx.

@himitsu & @MagicAndre1981,
ich habe das eben mal gecheckt, ...also ob dort, wo ein solches Bit13, Bit7 oder Bit10 in den Datei-Attributen auftauchen, ob dort im Explorer dann auch ein L- o. ein N-Attribut angezeigt wird. Antwort: Nö.


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