![]() |
AW: Ordner nicht leer
Damit wird geprüft, ob die Bitmaske der Dateiattribute das Flag faDirectory enthält. Wenn ja, ist es ein Verzeichnis.
|
AW: Ordner nicht leer
in Rec ist eine Datei (Verzeichniss-Attribut ist nicht gesetzt)
|
AW: Ordner nicht leer
Also lese ich das so richtig? Rec.Attr ist ein Integer und nicht null und faDirectory ist aber gleich null, dann ist es ein Ordner? Also kann man generell die Konstanten der FindFirt Funktion mit = 0 abfragen?
|
AW: Ordner nicht leer
Zitat:
Zitat:
einfach auf 0 prüfen ist der falsche weg. funktionieren denn die beispiele nicht? was für probleme haben die beispiele? |
AW: Ordner nicht leer
Wieso ist das der falsche Weg? Exakt auf faDirectory zu prüfen wäre definitiv falsch, da auch andere Attribute enthalten sein können. Zur Erklärung:
![]() |
AW: Ordner nicht leer
Zitat:
|
AW: Ordner nicht leer
In dem Moment, wo ein Unterverzeichnis z.B. das Archiv-Attribut gesetzt hat, funktioniert die exakte Prüfung nicht mehr, d.h. das Verzeichnis wird als Datei erkannt.
|
AW: Ordner nicht leer
hehe, warste schneller als ich :-) das wollte ich damit, ohne ausführlich zu werden, sagen.
//edit vielleicht hilft dir das hier kagi3624 -> ![]() hat jetzt nicht direkt was mit bitmasken zu tun aber da las ich auch vorhin ne frage die der link vielleicht ausführlicher beantwortet, um hinter der logik von delphi ein wenig durchzuschauen. |
AW: Ordner nicht leer
Hallo Kagi3624,
darf ich Dir zwei exzellente Fachbücher zu Deinem Delphi 6 empfehlen? Walter Doberenz und Thomas Kowalski: 1): Borland Delphi 6. Grundlagen und Profiwissen ![]() 2): Borland Delphi 6 Kochbuch ![]() Dort findest Du eine sehr gute Einführung in Delphi 6, u. a. auch in das Thema "Bitweise Operationen": --> Band 2: "Einen Wert auf Bit-Ebene manipulieren" Gruß, Andreas |
AW: Ordner nicht leer
Ok, um zu testen, ob ich es verstanden habe, habe ich die Suchfunktion abgewandelt um alle Dateinamen ohne die Unterordner in ein Memofeld zu schreibeiben.
Code:
Es funktioniert auch. Ich frage mich bloß, wieso man in diesem Fall nicht nach den '.' und '..' suchen muss.
function TForm1.DirContainsFiles(const Dirname: string): Boolean;
var Rec: TSearchRec; SearchPattern: string; begin Memo3.Text := ''; Result := false; SearchPattern := IncludeTrailingPathDelimiter(Dirname) + '*.*'; if FindFirst(SearchPattern, faAnyFile, Rec) = 0 then try repeat if Rec.Attr and faDirectory = 0 then begin Result := true; Memo3.Lines.Add(Rec.Name); end; until (FindNext(Rec) <> 0); finally SysUtils.FindClose(Rec); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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