AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ordner nicht leer

Ein Thema von kagi3624 · begonnen am 2. Jul 2020 · letzter Beitrag vom 2. Jul 2020
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Ordner nicht leer

  Alt 2. Jul 2020, 11:55
Damit wird geprüft, ob die Bitmaske der Dateiattribute das Flag faDirectory enthält. Wenn ja, ist es ein Verzeichnis.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.105 Beiträge
 
Delphi 12 Athens
 
#12

AW: Ordner nicht leer

  Alt 2. Jul 2020, 11:56
in Rec ist eine Datei (Verzeichniss-Attribut ist nicht gesetzt)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#13

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:14
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?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:17
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?
kurz und knapp, nein, weil .... ->
Damit wird geprüft, ob die Bitmaske der Dateiattribute das Flag faDirectory enthält. Wenn ja, ist es ein Verzeichnis.

einfach auf 0 prüfen ist der falsche weg.
funktionieren denn die beispiele nicht? was für probleme haben die beispiele?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:18
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: https://www.delphipraxis.net/95180-e...bitmasken.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#16

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:20
einfach auf 0 prüfen ist der falsche weg.
funktionieren denn die beispiele nicht? was für probleme haben die beispiele?
Ja doch. Das funktioniert wunderbar. Ich habe nur Probleme mit der Delphi Syntax bzw damit, dass etwas stimmt wenn es grade auf null gesetzt wurde.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:22
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:27
hehe, warste schneller als ich das wollte ich damit, ohne ausführlich zu werden, sagen.


//edit
vielleicht hilft dir das hier kagi3624 -> Vergleichsoperatoren
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.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 2. Jul 2020 um 12:30 Uhr)
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#19

AW: Ordner nicht leer

  Alt 2. Jul 2020, 12:34
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
https://www.amazon.de/Borland-Delphi.../dp/3446217347
2):
Borland Delphi 6 Kochbuch
https://www.amazon.de/Borland-Delphi.../dp/3446217355

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
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#20

AW: Ordner nicht leer

  Alt 2. Jul 2020, 13:06
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:
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;
Es funktioniert auch. Ich frage mich bloß, wieso man in diesem Fall nicht nach den '.' und '..' suchen muss.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
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