![]() |
Alle Dateien in Memo einlesen
Hallo erstmal =)
Ich möchte für ein kleines Programm die Namen aller Dateien, die in in einem bestimmten Orner liegen einlesen und in einem Memofeld ausgeben. Dank Google bin ich da auf findfirst() und findnext() gestoßen. nur leider komm ich damit noch nicht so ganz klar. Ich bitte euch mir kurz zu erklären, was ich falsch mache. Denn es wird immer nur ein Dateiname ausgegeben und das auch nur, wenn ich die Datei genau festlege. Also zum Beispiel wenn ich directory:='F:/report.xls' setze, wird im Memo1 "report.xls" ausgegeben. Danke schonmal =) Gruß Rico Hier ist mein Code:
Delphi-Quellcode:
procedure TForm1.LadenClick(Sender: TObject);
var directory: String; fle: tSearchRec; list: tStringList; begin list:=tstringlist.create; directory:='F:/'; if findfirst(directory, faAnyFile, fle) = 0 then begin repeat list.add(fle.name); until findnext(fle) <> 0; end; Memo1.Lines.Add(fle.Name); end; |
Re: Alle Dateien in Memo einlesen
Delphi-Quellcode:
repeat
Memo1.Lines.Add(fle.Name); until findnext(fle) <> 0; |
Re: Alle Dateien in Memo einlesen
Danke für deine schnelle Antwort!
Funktioniert aber leider immer noch nicht. Immernoch das gleich wie vorher. =( |
Re: Alle Dateien in Memo einlesen
Delphi-Quellcode:
directory:='F:\';
|
Re: Alle Dateien in Memo einlesen
Jetzt ist wenigstens schonmal das "Memo1" aus dem Memo verschwunden aber in Sachen Dateinamen hat sich nich viel getan.
Hab irgentwie das Gefühl, dass ich was Grundlegendes nicht verstanden hab. Oo |
Re: Alle Dateien in Memo einlesen
Hallo,
zeig noch mal deinen aktuellen Code. Es werden wohlgemerkt nur die Dateien unter der Wurzel (F:\) angezeigt, Dateien in Unterverzeichnise nicht (-> rekursives suchen) Heiko |
Re: Alle Dateien in Memo einlesen
Es fehlt noch die Maske also:
Delphi-Quellcode:
if findfirst(directory+'*.*', faAnyFile, fle) = 0 then
|
Re: Alle Dateien in Memo einlesen
Hallo Ricoo, willkommen in der Community :dp:
Versuch es mal so:
Delphi-Quellcode:
Aufruf für Dateien:
procedure ListFiles(Dir: string; List: TStrings; ListDirs: Boolean = false);
var Rec: TSearchRec; i: integer; begin List.BeginUpdate; List.Clear; if Length(trim(Dir)) = 0 then exit; if AnsiLastChar(Dir) <> '\' then Dir := Dir + '\'; i := FindFirst(Dir + '*.*', faAnyFile, Rec); if i = 0 then repeat if (Rec.Name[1] <> '.') and (ListDirs or ((Rec.Attr and faDirectory) = 0)) then List.Add(Rec.Name); i := FindNext(Rec); until i <> 0; SysUtils.FindClose(Rec); List.EndUpdate; end;
Delphi-Quellcode:
Und zusätzlich für Dateien und Verzeichnisse:
procedure TForm1.Button1Click(Sender: TObject);
begin ListFiles('F:\',Memo1.Lines); end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ListFiles('F:\',Memo1.Lines,true); end; |
Re: Alle Dateien in Memo einlesen
Yeaha, es hat Funktioniert. Das mit der Maske war's.
Danke für die Mühe, die ihr euch gemacht habt. =) Meine Procedure sieht jetzt so aus..
Delphi-Quellcode:
procedure TForm1.LadenClick(Sender: TObject); var directory: String; fle: tSearchRec; list: tStringList; VerzInhalt: TStringlist; begin list:=tstringlist.create; directory:='F:\'; if findfirst(directory + '*.*', faAnyFile, fle) = 0 then begin repeat Memo1.Lines.Add(fle.Name); until findnext(fle) <> 0; end; |
Re: Alle Dateien in Memo einlesen
Wozu die beiden StringListen? Die eine wird erzeugt und nicht wieder freigegeben, die andere überhaupt nicht benutzt :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 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