AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner nicht leer

Ein Thema von kagi3624 · begonnen am 2. Jul 2020 · letzter Beitrag vom 2. Jul 2020
Antwort Antwort
kagi3624

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

AW: Ordner nicht leer

  Alt 2. Jul 2020, 10:44
Ist es gut so?

Code:
function TForm1.CheckIfFilesInPath(const Path: string): Boolean;
var
  MySearch: TSearchRec;
  FindResult: Integer;
begin
  result := false;
  FindResult:=FindFirst(Path+'\*.*', faAnyFile, MySearch);
  while (FindResult = 0) do
  begin
    if (MySearch.Name<>'.') and (MySearch.Name<>'..') and (MySearch.Attr <> faDirectory) then begin
      result := true;
      break;
    end;

    FindResult := FindNext(MySearch);
  end;
  FindClose(MySearch);
end;
@Andreas13
das konnte ich so nicht kompilieren, ich bekomme den Fehler
Code:
[Fehler] trash.pas(213): Undefinierter Bezeichner: 'SysUtils'
das habe ich bei den Uses aber angebunden. Vielleicht liegt es aber an meinem uralten Delphi 6
  Mit Zitat antworten Zitat
Andreas13

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

AW: Ordner nicht leer

  Alt 2. Jul 2020, 10:48
Kein Problem: Wahrscheinlich hat Delphi 6 auch noch kein WinAPI.Windows, so daß es dort (noch) keinen Konflikt geben kann.
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ordner nicht leer

  Alt 2. Jul 2020, 10:53
Anderer Vorschlag:
Delphi-Quellcode:
function DirContainsFiles(const Dirname: string): Boolean;
var
  Rec: TSearchRec;
  SearchPattern: string;
begin
  Result := false;
  SearchPattern := IncludeTrailingBackslash(Dirname) + '*.*';
  if FindFirst(SearchPattern, faAnyFile, Rec) = 0 then
    try
      repeat
        if Rec.Attr and faDirectory = 0 then
          Result := true;
      until (FindNext(Rec) <> 0) or Result;
    finally
      SysUtils.FindClose(Rec);
    end;
end;
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
 
#4

AW: Ordner nicht leer

  Alt 2. Jul 2020, 11:04
Hallo Deddyh! Könntest du bitte die Zeile hier erklären`?

Code:
if Rec.Attr and faDirectory = 0 then
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#5

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
44.570 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ordner nicht leer

  Alt 2. Jul 2020, 11:56
in Rec ist eine Datei (Verzeichniss-Attribut ist nicht gesetzt)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
kagi3624

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

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.691 Beiträge
 
Delphi 11 Alexandria
 
#8

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.667 Beiträge
 
Delphi 12 Athens
 
#9

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
 
#10

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
Antwort Antwort


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 01:37 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