Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FindFirst, FindNext- Dateinamen sortiert einlesen (https://www.delphipraxis.net/4938-findfirst-findnext-dateinamen-sortiert-einlesen.html)

Lantis 17. Mai 2003 13:47


FindFirst, FindNext- Dateinamen sortiert einlesen
 
Hi Leute,
ich hab folgendes Problem: Ich lese in alle in einem bestimmten Verzeichnis liegenden Dateinamen in ein StringGrid, aber die Namen sind nicht alphabetisch sortiert sondern in der Reihenfolge wie sie gespeichert sind (FAT-Tabelle?). Wie kann ich es erreichen, daß die Dateinamen gleich alphabetisch eingelesen werden?
Erklährung:
Es sollen im Verzeichnis C:\Test alle Dateien mit Endung *.be eingelesen werden in ein StringGrid (sgListe).
Delphi-Quellcode:
procedure TForm1.btnEinlesenClick(Sender: TObject);
var sr: TSearchRec;
    i,m,n: integer;
begin
  for m:=1 to sgListe.RowCount do  
   for n:=0 to sgListe.ColCount do
   sgListe.Cells[n,m]:='';
   sgListe.RowCount:=2;
  i:=1;
  if DirectoryExists('C:\Test')then
  begin
    FindFirst('C:\Test\*.be', faAnyFile, sr);
    sgListe.Cells[0,i]:=IntToStr(i);
    sgListe.Cells[1,i]:=sr.Name;
    try
      while (FindNext(sr) = 0) do
      begin
        i:=i+1;
        sgListe.RowCount:=i+1;
        sgListe.Cells[0,i]:=IntToStr(i);
        sgListe.Cells[1,i]:=sr.Name;
      end;
    finally;
      FindClose(sr);
    end;
  end else
  ShowMessage('Verzeichnis nicht vorhanden!');
end;
Was muß ich da ändern?

Duffy 17. Mai 2003 13:55

Hallo Lantis,
in was liest Du die Einträge ein? StringGrid?
bye

Christian Seehase 17. Mai 2003 14:05

Moin Lantis,

Zitat:

Zitat von Lantis
Wie kann ich es erreichen, daß die Dateinamen gleich alphabetisch eingelesen werden?

Gar nicht. Dafür sind die Funktionen nicht ausgelegt.
Du könntest höchstens die Dateien eines Verzeichnisses einlesen, sortieren, und dann so in Dein StringGrid eintragen.

Lantis 17. Mai 2003 18:35

Hi, danke für die schnellen Antworten, hab leider erst jetzt reinschauen können, war ein paar Stunden abwesend(...elenden Pflichten...).

@Duffy
Ja, lese das Ganze in ein StringGrid ein, habs auch schon mal mit ListBox und Memo probiert, alles selbes Resultat.

@Chris
Wie würde ich da am besten vorgehen? In 'ne ListBox...? :wall:

Gruß Lantis

jbg 17. Mai 2003 20:17

In eine TStringList einlesen, dann StringList.Sort aufrufen und dann ausgeben.

Lantis 19. Mai 2003 20:01

Hi jpg,
mit TStringList klappt's.
Sieht jetzt bei mir ungefähr (gekürzt) so aus:
Delphi-Quellcode:
procedure TForm1.Einlesen(Sender: TObject);
var sr: TSearchRec;
    i,m,n: integer;
    TempList: TStringList;
begin
  TempList := TStringList.Create;
  TempList.Sorted:=True;
  for m:=1 to sgListe.RowCount do
   for n:=0 to sgListe.ColCount do
   sgListe.Cells[n,m]:='';
   sgListe.RowCount:=2;
  if DirectoryExists('C:\Test')then
  begin
    try
      FindFirst('C:\Test\'+'*.be',faAnyFile,sr);
      TempList.Add(copy(sr.Name,1,pos('.',sr.Name)-1));
      while (FindNext(sr) = 0) do
        TempList.Add(copy(sr.Name,1,pos('.',sr.Name)-1));
      i:=0;
      while not (i=TempList.Count) do
      begin
        i:=i+1;
        sgListe.RowCount:=i+1;
        sgListe.Cells[0,i]:=TempList.Strings[i-1];
      end;
    finally;
      TempList.Free;
      FindClose(sr);
    end;
//   igendwo blahblah:=IntToStr(i)+' BE-Dateien gefunden!';
    Auslesen(Sender);
  end else
//  igendwo blahblah:='Verzeichnis nicht vorhanden!';
end;
Danke an Alle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.

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