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 Ordner nicht gleich Ordner? Gibt es Unterschiede? (https://www.delphipraxis.net/119714-ordner-nicht-gleich-ordner-gibt-es-unterschiede.html)

formosa 30. Aug 2008 10:57


Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

Gibt es eigentlich Unterschiede bei Ordnern? Ich lasse mir Ordner in einem TreeView anzeigen, und folgender Code sucht nach den Ordnern:

Delphi-Quellcode:
var
  path : string;
  search : TSearchRec;
  nc : TTreeNode;

begin
  if n = nil then exit;
  path := GetDirStr(n);
    if findfirst(path + '*.*',faDirectory,search) = 0 then repeat
      if ((search.attr and fadirectory)= fadirectory)and
        (search.name <> '.')and(search.name <> '..') then
        begin
         // 
        end;
      until findnext(Search)<>0;
      findClose(Search);
end;
Das funktioniert soweit gut. Aber kürzlich habe ich es mit meinem USB Stick versucht und dabei ist mir aufgefallen das zwei Ordner nicht aufgeführt sind, normale Ordner aber schon.

Gibt es Unterschiede Bei Ordnern? Oder woran könnte es liegen?

Vielen Dank,

Chris

marabu 30. Aug 2008 11:30

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Halloo Chris,

vielleicht wurden den beiden Ordnern zusätzliche Attribute verliehen?

Delphi-Quellcode:
if FindFirst(path + '*.*', faDirectory + faSysFile + faHidden, search) = 0 then
repeat
  if ((search.attr and fadirectory) = fadirectory)
  and (Pos(search.name, '..') = 0)) then
  begin
    //
  end;
until FindNext(search) <> 0;
FindClose(search);
Freundliche Grüße

grenzgaenger 30. Aug 2008 11:37

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
prüf doch mal mit dem debugger welche attr. die ordner haben... oder lass dir die ganzen attribute in eine liste ausgeben...

dann siehst du es am schnellsten...

SirThornberry 30. Aug 2008 11:38

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
[OT]
Aber sowas sollte man doch gar keinem erst beibringen :wink:
Delphi-Quellcode:
faDirectory + faSysFile + faHidden
Durch die Compilermagic mag dies funktionieren. Aber Anfänger die ältere Versionen verwenden suchen dann ewig nach dem Fehler wenn sie sich sowas angewöhnen.

Anhand der Symbole im Screenshot vermute ich das die Attribute System und Hidden gesetzt sind und in dem Ordner eine Desktop.ini liegt.

DeddyH 30. Aug 2008 11:43

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Wieso nicht gleich faAnyFile, wenn das faDirectory-Flag anschließend ausgewertet wird?

formosa 30. Aug 2008 11:54

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Danke an alle. Hab nur faDirectory in faAnyFile geändert und es funktioniert.

Gruss Chris

Die Muhkuh 30. Aug 2008 12:41

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Zitat:

Zitat von SirThornberry
[OT]
Aber sowas sollte man doch gar keinem erst beibringen :wink:
Delphi-Quellcode:
faDirectory + faSysFile + faHidden
Durch die Compilermagic mag dies funktionieren. Aber Anfänger die ältere Versionen verwenden suchen dann ewig nach dem Fehler wenn sie sich sowas angewöhnen.

Um es noch richtig aufzuschreiben, verknüpfen von Bitmasken funktioniert mit OR und nicht mit and oder +:

Delphi-Quellcode:
faDirectory or faSysFile or faHidden

grenzgaenger 30. Aug 2008 12:50

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
kommt in diesem fall aus selbe raus, da die masken distinct sind...

DeddyH 30. Aug 2008 13:03

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Trotzdem sollte man es gleich richtig machen, sonst wundert man sich später.

marabu 30. Aug 2008 13:10

Re: Ordner nicht gleich Ordner? Gibt es Unterschiede?
 
Hallo Jens,

Zitat:

Zitat von SirThornberry
... Aber sowas sollte man doch gar keinem erst beibringen ... Durch die Compilermagic mag dies funktionieren. ...

dein Hinweis ist zwar nicht falsch, aber für einen wirklichen Anfänger mindestens so verwirrend, wie das unerwartete Ergebnis bei FindFirst(..., faHidden + faHidden, ...). Wenn du also etwas für die Ausbildung der Ungelernten tuen möchtest, dann musst du die Zusammenhänge erläutern oder einen Link setzen. Ich wollte mir das ersparen.

Mit Compiler Magic hat das Addieren von ganzzahligen Konstanten übrigens nichts zu tun. Die ODER-Verknüpfung ist vorteilhaft bei Bit-Schaltern, die im Laufe der Zeit um Aliasse oder Sammelmasken angereichert wurden. Sie schützt den Unkundigen vor Stellenüberträgen. Im vorliegenden Fall wäre die Summe von faAnyFile und einer der anderen Konstanten fatal. Übrigens auch die Delphi-Hilfe richtet sich nicht an Anfänger:

DOH - Topic Findfirst
... Sie können auch mehrere Attribute kombinieren, indem Sie die betreffenden Konstanten hinzufügen (Delphi) bzw. eine ODER-Verknüpfung (C++) durchführen. Soll beispielsweise zusätzlich zu den normalen auch nach schreibgeschützten und versteckten Dateien gesucht werden, übergeben Sie als Parameter Attr in Delphi den Wert (faReadOnly + faHidden) ...


Und zur Frage von Detlef: faAnyFile ist für Schreibfaule oder solche, die Dateiattribute lieber erst gar nicht kennen lernen wollen.

Und weil du gerade nochmal etwas geschrieben hast: Richtig oder Falsch gibt es hier nicht. Wenn das richtige Ergebnis reproduzierbar ist, dann ist der Weg richtig. Du meinst bestimmt etwas anderes und hast nur die falschen Worte benutzt.

Freundliche Grüße


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