Delphi-PRAXiS
Seite 1 von 2  1 2      

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:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.
Seite 1 von 2  1 2      

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