Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Alle Dateien in Memo einlesen (https://www.delphipraxis.net/95638-alle-dateien-memo-einlesen.html)

Ricoo 10. Jul 2007 20:30


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;

mkinzler 10. Jul 2007 20:34

Re: Alle Dateien in Memo einlesen
 
Delphi-Quellcode:
  repeat    
      Memo1.Lines.Add(fle.Name);
  until findnext(fle) <> 0;

Ricoo 10. Jul 2007 20:42

Re: Alle Dateien in Memo einlesen
 
Danke für deine schnelle Antwort!
Funktioniert aber leider immer noch nicht. Immernoch das gleich wie vorher. =(

mkinzler 10. Jul 2007 20:46

Re: Alle Dateien in Memo einlesen
 
Delphi-Quellcode:
directory:='F:\';

Ricoo 10. Jul 2007 20:53

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

hoika 10. Jul 2007 21:06

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

mkinzler 10. Jul 2007 21:06

Re: Alle Dateien in Memo einlesen
 
Es fehlt noch die Maske also:
Delphi-Quellcode:
 if findfirst(directory+'*.*', faAnyFile, fle) = 0 then

DeddyH 10. Jul 2007 21:11

Re: Alle Dateien in Memo einlesen
 
Hallo Ricoo, willkommen in der Community :dp:
Versuch es mal so:
Delphi-Quellcode:
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;
Aufruf für Dateien:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListFiles('F:\',Memo1.Lines);
end;
Und zusätzlich für Dateien und Verzeichnisse:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListFiles('F:\',Memo1.Lines,true);
end;

Ricoo 10. Jul 2007 21:24

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;

DeddyH 10. Jul 2007 21:28

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 01:56 Uhr.
Seite 1 von 2  1 2      

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