AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi FindFirst, FindNext- Dateinamen sortiert einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

FindFirst, FindNext- Dateinamen sortiert einlesen

Ein Thema von Lantis · begonnen am 17. Mai 2003 · letzter Beitrag vom 19. Mai 2003
Antwort Antwort
Benutzerbild von Lantis
Lantis

Registriert seit: 13. Mär 2003
16 Beiträge
 
Delphi 6 Personal
 
#1

FindFirst, FindNext- Dateinamen sortiert einlesen

  Alt 17. Mai 2003, 14:47
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?
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#2
  Alt 17. Mai 2003, 14:55
Hallo Lantis,
in was liest Du die Einträge ein? StringGrid?
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 17. Mai 2003, 15:05
Moin Lantis,

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Lantis
Lantis

Registriert seit: 13. Mär 2003
16 Beiträge
 
Delphi 6 Personal
 
#4
  Alt 17. Mai 2003, 19: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...?

Gruß Lantis
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5
  Alt 17. Mai 2003, 21:17
In eine TStringList einlesen, dann StringList.Sort aufrufen und dann ausgeben.
  Mit Zitat antworten Zitat
Benutzerbild von Lantis
Lantis

Registriert seit: 13. Mär 2003
16 Beiträge
 
Delphi 6 Personal
 
#6
  Alt 19. Mai 2003, 21: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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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