![]() |
FindFirst - faAnyFile, SearchRec
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
wenn ich hiermit ein Vezeichnis wähle um mir die Pfade der darin enthaltenen Dateien in eine Listbox zu schreiben:
Delphi-Quellcode:
..bekomme ich manchmal in der ersten beiden Zeilen der Listbox keine Dateipfade angezeigt... sondern nur das Verzeichnis
if
FolderDialog1.Execute=True then begin s:=FolderDialog1.Directory; i := FindFirst(s+'\*.*', faAnyFile, SearchRec); while i = 0 do begin ListBox1.Items.Add(s+'\'+SearchRec.Name); (schaut euch bitte das Bild an, wüßte nicht wie ich das sonst genauer beschreiben soll) Wenn ich aber mit den dateien in der Listbox arbeiten will gibst einen Fehler, deshalb müßen falls vorhanden die ersten beiden Dateilosen Zeilen raus, Wie muss ich vorgehen? gruss vom capo |
Re: FindFirst - faAnyFile, SearchRec
einfach die "Filenamen" ausblenden wenn die ein . oder .. sind
das ist das aktuelle bzw. das parent Verzeichnis (ist ganz normal das diese gefunden und angezeigt werden) |
Re: FindFirst - faAnyFile, SearchRec
HI :)
wie blende ich den . und .. aus? gruss capo |
Re: FindFirst - faAnyFile, SearchRec
Delphi-Quellcode:
if
FolderDialog1.Execute=True then begin s:=FolderDialog1.Directory; i := FindFirst(s+'\*.*', faAnyFile, SearchRec); while i = 0 do begin if not ( (SearchRec.Name = '.') or (SearchRec.Name = '..') ) then ListBox1.Items.Add(s+'\'+SearchRec.Name); |
Re: FindFirst - faAnyFile, SearchRec
Sehr schön - und Dateien mit dem Namen werden denn gleich mit ausgeblendet. Durch NFS Clients etc ist nicht gleich gesagt, dass es bei allen unter Windows benutzten Dateisystemen dies nicht existieren kann...
|
Re: FindFirst - faAnyFile, SearchRec
Zitat:
|
Re: FindFirst - faAnyFile, SearchRec
Möchtest DU die in dem Pfad enthaltenen Unterordner auch sehen?
Wenn nicht, dann ruf das FirndFirst mit
Code:
auf.
(faAnyFile and not FaDirectory)
Dann bekommst DU gar keine Ordner (weder übergeordnete noch untergeordnete) zu sehen. Eine Anmerkung am Rande: Du schreibst:
Delphi-Quellcode:
Du solltest hier nur
if FolderDialog1.Execute=True then
Delphi-Quellcode:
verwenden.
if FolderDialog1.Execute then
Warum das so ist, ist hier schon oft diskutiert worden und über die Forensuche leicht zu finden. Gruß Thomas |
Re: FindFirst - faAnyFile, SearchRec
Delphi-Quellcode:
Danke, genau das war's.
(faAnyFile and not FaDirectory)
Zitat:
Ich bezweifel nicht das es nichts gibt. Magst du es trotzdem mal erklären? gruss capo |
Re: FindFirst - faAnyFile, SearchRec
Der Unterschied liegt darin, dass True als konstante mit einem festen Wert definiert wurde. Wenn du nun einen Vergleich auf True in deiner IF Bedingung schreibst, dann wird das Ergebnis direkt auf diesen konstanten Wert durchgeführt. Das Problem hierbei liegt im Detail, denn ein boolscher Wert wird wie folgt zugeordnet:
0 => False <> 0 => True Somit ist alles ungleich 0 True, und das ist immer mehr als eine bestimmte Konstante beinhalten kann. Daher ist es hier von Vorteil einfach diesen direkten Vergleich weg zu lassen und nur das Execute aufzurufen ohne Vergleich. IF Bedingungen vergleichen das Ergebnis auf Gleichheit mit 0 und handeln entsprechend - und das sollte immer klappen, weil 0 festgelegt ist als FALSE, während True sich in vielen Formen äussern kann. Zitat:
|
Re: FindFirst - faAnyFile, SearchRec
Nun verstehe ich es, danke für die tolle Erklärung.
capo Danke nochmal an alle :love: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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