Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Namen von vorhandenen Pfaden auslesen (https://www.delphipraxis.net/160784-namen-von-vorhandenen-pfaden-auslesen.html)

Dunkelbunt27 31. Mai 2011 17:27


Namen von vorhandenen Pfaden auslesen
 
Hallo Delphi-PRAXIS,

ich möchte die Namen aller vorhandenen Dateien in verschiedenen Unterpfaden eines Verzeichnisses auslesen und sie in einer Auswahlliste, z.B. ListBox anzeigen.
Dabei soll nur das Ende, also der Dateiname angezeigt werden. (Beim Auswählen muss aber wieder der komplette Pfad zur Verfügung stehen.)
Das ganze soll etwa so aussehen:
Code:
Gespeicherte Dateien (Ordner in dem gesucht werden soll)
   - Geburtstag (Ordner)
      - Geburtstag_2009.xxx (Datei)
      - Geburtstag_2010.xxx (Datei)
      - Geburtstag_2011.xxx (Datei)
   - Schulferien(Ordner)
      - Schulferien_2009.xxx (Datei)
      - Schulferien_2010.xxx (Datei)
      - Schulferien_2011.xxx (Datei)

ListBox o.a.:
      Geburtstag_2009
      Geburtstag_2010
      Geburtstag_2011
      Schulferien_2009
      Schulferien_2010
      Schulferien_2011
Wie könnte man das realisieren?
Danke für eure Hilfe.

rollstuhlfahrer 31. Mai 2011 17:42

AW: Namen von vorhandenen Pfaden auslesen
 
Entweder du nimmst ein Array zu Hilfe, in dem dann die Pfade drin stehen (passend zu den Einträgen in der ListBox) oder du nimmst ein Listview/Treeview. Da hat jeder Eintrag ein Data-Feld. Da kann man den Pfad auch rein schreiben.

Bernhard

Dunkelbunt27 31. Mai 2011 17:57

AW: Namen von vorhandenen Pfaden auslesen
 
Du meinst also, die Dateinamen, Pfade beim Anlegen der Datei in dem Array einzutragen?
Aber mein Problem ist ja, rückschließend auf die vorhandenen Pfade die ListBox (ListeView...) zu füllen...

himitsu 31. Mai 2011 18:17

AW: Namen von vorhandenen Pfaden auslesen
 
Wie schon erwähnt, gibt es dafür das Data-Feld bei jedem Item.

Entweder du füllst eine Liste/Array parallel zur ListBox und speicherst am gleichen Index, wo etwas in der ListBox steht auch im Array, dann kannst du über den Index des Items auf das Array zugreifen.

Oder man füllt die ListBox/TreeView, speichert dann den kompletten Namen in einer Liste/Array und legt den Index vom Array in .Data des Items.

Oder man speichert direkt den vollen Namen als cast in .Data ab.

Oder man speichert den vollen Namen in einem Datenobjekt, welcher in .Data verlinkt wird.

Oder man nimmt statt des Daten-Objekts einen Record.

Oder man trennt seine Daten von der GUI, legt eine Liste an, füllt dann über diese Liste die ListBox/TreeView und speichert in .Data die Rückreferenzen auf die Werte in der Liste.

Dunkelbunt27 31. Mai 2011 18:19

AW: Namen von vorhandenen Pfaden auslesen
 
Okay gut, das ist jetzt klar.
Aber wie kann ich herausfinden, welche Dateien in dem Ordner X existieren?

himitsu 31. Mai 2011 18:25

AW: Namen von vorhandenen Pfaden auslesen
 
Zitat:

Zitat von Dunkelbunt27 (Beitrag 1103983)
Aber wie kann ich herausfinden, welche Dateien in dem Ordner X existieren?

Eigentlich "Neue Frage neuer Thread"

Oder man nimmt gleich die SuFu/Forensuche: Hier im Forum suchenDateien auflisten, Hier im Forum suchenDateien suchen usw.
PS: Delphi-Referenz durchsuchenFindFirst


Oder meinst du innerhalb der ListBox?
> Alle untergeordneten Items durchgehn
> oder man implementiert in seiner externen Datenhaltungsklasse eine Methode, welcher direkt aus ihren Daten sowas auflistet.

Dunkelbunt27 31. Mai 2011 18:32

AW: Namen von vorhandenen Pfaden auslesen
 
Zitat:

Eigentlich "Neue Frage neuer Thread"
Das war eigentlich meine Anfangsfrage, ich war wohl etwas undeutlich...

Die ListBox zu füllen ist eher Nebensache.
Das wichtige ist ohne zu wissen ob oder welche Dateien in einem Ordner vorhanden sind, deren existenz und Namen (Pfad) herauszufinden.

Danke, ich schau mal bei deinen aufgelisteten Sucheinträgen nach.

himitsu 31. Mai 2011 18:37

AW: Namen von vorhandenen Pfaden auslesen
 
Speziell für Dateien, im Dateisystem > Delphi-Referenz durchsuchenFileExists

Dunkelbunt27 31. Mai 2011 18:44

AW: Namen von vorhandenen Pfaden auslesen
 
Ja, FileExists ist bekannt... nur ist das nur sinnvoll, wenn man weiß wie die Datei heißt, die überprüft werden soll.

Satty67 31. Mai 2011 19:14

AW: Namen von vorhandenen Pfaden auslesen
 
Vieleicht suchst du ja sowas (der erte Aufruf dauert, wenn Du Windows als Such-Ordner lässt...)

Wie Du die ermittelten Dateien (statt im Memo zu listen) auswertest, sollte klar sein.

Delphi-Quellcode:
procedure ListDirectory(APath, AFilter : String; AStrings : TStrings);
var
  s : String;
  sr : TSearchRec;
begin
  s := IncludeTrailingPathDelimiter(APath);
  try
    if FindFirst(s + AFilter, faAnyFile, sr) = 0 then
    begin
      repeat
        if (sr.Name <> '.') and (sr.Name <> '..') then // Korrektur durch DeddyH
        begin
          AStrings.Add(s + sr.Name);
          if (sr.Attr and faDirectory) = faDirectory then
            ListDirectory(s + sr.Name, AFilter, AStrings);
        end;
      until FindNext(sr) <> 0;
    end;
  finally
    FindClose(sr);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.BeginUpdate;
  ListDirectory('C:\Windows', '*.*', Memo1.Lines);
  Memo1.Lines.EndUpdate;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 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