![]() |
Alle dateien von C:\ in ein Memo
Moin,
ich habe eine Funktion geschrieben, die mit alle Dateien von C:\ auflisten sollte:
Delphi-Quellcode:
Am Anfang zum Start übergebe ich "C:\"... das showmessage sollte mir nur als hilfe dienen um zu gucken ob die Pfäde stimmen, das tun sie aber nicht....die ersten 2 Ordner werden mir richtig angezeigt, aber nachher gibt es auf einmal ordner die nur "." heissen? WIe z.b "C:\MeinOrdner\.\"...woher kommt das?
procedure GetFiles(const Path: string);
var SearchRec: TSearchRec; p: string; begin p := path + '*.*'; showmessage(p); if FindFirst(p, faAnyFile, SearchRec) = 0 then begin repeat if (SearchRec.Attr and faDirectory) = faDirectory then GetFiles(Path + SearchRec.Name + '\') else Form1.Memo1.Lines.Add(SearchRec.Name); until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; end; |
Re: Alle dateien von C:\ in ein Memo
In der Code-Lib haben wir doch schon so eine Funktion, warum vergleichst du damit nicht einfach mal? Desweiteren repräsentiert '.' den aktuellen Ordner und '..' den übergeordneten. Sie werden nur im Explorer logischerweise nicht angezeigt.
|
Re: Alle dateien von C:\ in ein Memo
Danke Luckie, mit der Addition von:
Delphi-Quellcode:
klappt es.
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
Ich weiss zwar, das "." für den aktuellen und ".." für den übergeordneten ordner stehen, nur weiss ich nicht, wieso sie einem übergeben werden hier...hmm, das würde ich gerne verstehen |
Re: Alle dateien von C:\ in ein Memo
Moin Pseudemys Nelsoni,
das klingt jetzt vielleicht seltsam aber: Sie werden Dir übergeben, weil sie da sind, und Du sie abfragst. Mach mal ein Dir in der Konsole. Dort werden sie auch angezeigt. |
Re: Alle dateien von C:\ in ein Memo
Moin Christian,
also hat man in Unterordnern sozusagen immer versteckte(?) Ordner die auf den übergeordneten verweisen, richtig? Wenn das so ist, müsste das ganze dann nicht in einer Endlosschleife enden? Ich meine die Ordner würden ja immer wieder auf den anderen zeigen? @Thema: Ich habe meinen Code nun so:
Delphi-Quellcode:
Ist daran immernoch was falsch? Weil komischer weise, bekomme ich am Ende der Suche:
procedure GetFiles(const Path: string);
var SearchRec: TSearchRec; p: string; begin p := path + '*.*'; if FindFirst(p, faAnyFile, SearchRec) = 0 then begin repeat if (SearchRec.Attr and faDirectory) = faDirectory then begin if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then GetFiles(Path + SearchRec.Name + '\'); end else Form1.Memo1.Lines.Add(SearchRec.Name); until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; end; Zitat:
Das kann nicht stimmen |
Re: Alle dateien von C:\ in ein Memo
Arbeitet beimir korrekt. Aber warum benutzt du nicht sakuras erprobte Methode aus der Coide-Lib? hat zu dem noch den Vorteil, dass sie, im gegensatz zu deiner Methode, unabhängig von der GUI ist.
|
Re: Alle dateien von C:\ in ein Memo
Danke fürs Testen. Also bei mir finde ich per Windows-Suche nicht 1 Ergebnis auf "INFO2", hmm.
Ich habe Sakuras Code nicht benutzt, da ich so weit wie möglich immer versuche alles selbst zu schreiben - So kapier ich es meistens besser ;) |
Re: Alle dateien von C:\ in ein Memo
Die desktop.ini Dateien sind bei mir versteckte Dateien. Läßt du dir die auch anzeigen im Explorer? Eventuell findet er sie deswegen nicht bzw. zeigt sie nicht an.
|
Re: Alle dateien von C:\ in ein Memo
Hallo Lucky, stimmt Du hast Recht, ich habe mir mal die Pfade komplett anzeigen lassen...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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