Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi findnext+dateiattribute+schreibgeschuetzte verzeichnisse ? (https://www.delphipraxis.net/33234-findnext-dateiattribute-schreibgeschuetzte-verzeichnisse.html)

richard_boderich 3. Nov 2004 19:05


findnext+dateiattribute+schreibgeschuetzte verzeichnisse ?
 
tach auch!

hab ein kleines problem. habe folgenden code um dateien und verzeichnisse anzuzeigen.
das klappt aber nich wenn das verzeichnis schreibgeschuetzt ist. dann wird das verzeichnis
auf die Seite der dateien sortiert. kann mir jemand sagen wo's hackt,
ich glaub ich mache immer den selben denkfehler.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
    dircount:=0;
    filecount:=0;
    x:=20;
    y:=20;
    if FindFirst('C:\*.*', faReadOnly   + faHidden + faSysFile + faVolumeID + faDirectory + faArchive + faAnyFile, sr) = 0 then
    begin
      repeat
        if sr.attr <> fadirectory then
        begin
        canvas.TextOut(300,y,sr.Name);
        inc(y,20);
        inc(filecount);
        end;
        if sr.Attr = fadirectory then
        begin
        canvas.TextOut(20,x,sr.Name);
        inc(x,20);
        inc(dircount,1);
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;

    label1.Caption:=inttostr(dircount)+' '+'Verzeichnisse'+'         '+inttostr(filecount)+' '+'Dateien';

    end;

jim_raynor 3. Nov 2004 19:15

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
Versuche mal statt + or zu verwenden. Und wenn du alle Dateien haben möchstest kannst du auch faAnyFile anstatt faReadOnly + faHidden ... benutzen.

jim_raynor 3. Nov 2004 19:17

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
Achso. Jetzt sehe ich erst dein eigentliches Problem.

Mach folgende Abfrage:

if (sr.attr and fadirectory)=faDirectory then

Wenn du dich bissle mit Binärer Logik beschäftigen, wirst du die Lösung vielleicht auch verstehen ;)

richard_boderich 3. Nov 2004 19:18

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
hallo,

erstmal danke für deine antwort. das mit dem or hab ich schon probiert, ist genau dasselbe ergebnis.
hat keiner eine idee ?

richard_boderich 3. Nov 2004 19:43

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
ok damit funktionierts, aber erklaer mir bitte mal warum

PS: ich versteh schon was von biaerer logic, aber ich kenne nicht
die entsprechenden binaerwerte für die delhi fileattr konstanten

Christian Seehase 3. Nov 2004 21:05

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
Moin Richard,

Zitat:

Zitat von richard_boderich
aber ich kenne nicht die entsprechenden binaerwerte für die delhi fileattr konstanten

womit Du schon einmal eine wunderbare Begründung geliefert hättest, warum man solche Konstanten mit or statt mit + verknüpft.

In Deinem Falle hast Du faAnyFile zu den anderen Konstanten addiert. faAnyFile ist aber schon die Kombination aus den anderen, wodurch ein Wert entstanden ist, mit dem die zugrunde liegende API Funktion, vermutlich, nichts anfangen kann.
Für FindFirst stehen die Werte der Konstanten übrigens in der Delphi Hilfe von D5 Pro und D6 PE. Bei D7 PE stehen sie nicht. Warum auch immer Borland das jetzt eingespart hat :gruebel:

Es hat sich für mich übrigens als ganz sinnvoll herausgestellt immer mit faAnyFile (auf die anderen kannst Du dann ja verzichten) zu suchen, und anschliessend das gewünschte zu filtern.

Das Problem mit der Abfrage (if sr.attr = ...) ergibt sich dadurch, dass eben, im Falle eines zusätzlich mit einem oder mehreren anderen Attributen versehenen Verzeichnisses, der Wert nicht gleich dem eines einzelnen Attributes ist.
Durch die Verknüpfug die Jim durchführt hat, werden die Bits aus den Attributen ausmaskiert, die die Kennzeichnung für Verzeichnis darstellen (es ist zwar nur ein Bit, aber wenn man die Werte nicht kennt muss man auch die Möglichkeit in Betracht ziehen, dass es mehrere sind).
Ist der Wert der ausmaskierten Bits gleich der Maske hast Du eine Übereinstimmung.

Übrigens zählst Du auch die Verzeichnisse . und .. mit.
Ist das gewollt?

richard_boderich 3. Nov 2004 22:57

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
jo danke cristian

richard_boderich 3. Nov 2004 23:01

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
ich grade erst angefangen das zu proggen, will eine routine bauen, die jedes file auf der festplatte findet
ähnlich einem virenscanner und rekursiv ist.

die . oder besser .. brauch ich eigentlich nich , aber war eh erst ne ideen-vorlage

richard_boderich 3. Nov 2004 23:44

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
ich grade erst angefangen das zu proggen, will eine routine bauen, die jedes file auf der festplatte findet
ähnlich einem virenscanner und rekursiv ist.

die . oder besser .. brauch ich eigentlich nich , aber war eh erst ne ideen-vorlage

jim_raynor 4. Nov 2004 06:15

Re: findnext+dateiattribute+schreibgeschuetzte verzeichnisse
 
Zitat:

Zitat von richard_boderich
ich grade erst angefangen das zu proggen, will eine routine bauen, die jedes file auf der festplatte findet
ähnlich einem virenscanner und rekursiv ist.

die . oder besser .. brauch ich eigentlich nich , aber war eh erst ne ideen-vorlage

Wenn du fragen hast, dann frag uns :)


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