![]() |
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:
Was muß ich da ändern?
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; |
Hallo Lantis,
in was liest Du die Einträge ein? StringGrid? bye |
Moin Lantis,
Zitat:
Du könntest höchstens die Dateien eines Verzeichnisses einlesen, sortieren, und dann so in Dein StringGrid eintragen. |
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 |
In eine TStringList einlesen, dann StringList.Sort aufrufen und dann ausgeben.
|
Hi jpg,
mit TStringList klappt's. Sieht jetzt bei mir ungefähr (gekürzt) so aus:
Delphi-Quellcode:
Danke an Alle!
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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