AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordnernamen auslesen

Ein Thema von BullsEye · begonnen am 12. Sep 2008 · letzter Beitrag vom 26. Apr 2009
Antwort Antwort
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#1

Ordnernamen auslesen

  Alt 12. Sep 2008, 17:20
Hallo Leute,

Also, ich habe ein Programm, da kann ich auf Buttonklick Einträge in eine ListeBox (Liste) hinzufügen.

Delphi-Quellcode:
IF (Edit1.Text <> '') THEN
Liste.AddItem(Edit1.Text + ' (' + ComboBox1.Text + ' | '+ Label1.Caption + ' | '+ Label2.Caption + ')',Sender);
ELSE
ShowMessage('Bitte geben Sie einen Namen an!');
Und um mir die Arbeit zu erleichtern, ist mir gerade folgendes Eingefallen:

Ich will einen Pfad (C:\Medien\TestOrdner) durchsuchen. In dem Ordner sind weitere Unterordner.
Die Namen der Ordner innerhalb des Pfades soll zur Listbox (Liste) hinzugefügt werden!


ODER:

Wäre es besser, den Pfad nach bestimmten Dateitypen (*.avi|*.divX etc) zu durchsuchen und deren Namen dann zur ListBox hinzuzufügen?
Das hätte dann den Vorteil, das ich die Datei auch gleich von meinem Programm aus starten könnte.


1) Welche Lösung ist besser?
2) Bzw gibts noch ne andere Lösung die ggf noch besser ist?
3) Wie realisier ich das?

Und das ganze sollte möglichst einfach & schnell (also das Laden) sein!


Danke & gruß
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#2

Re: Ordnernamen auslesen

  Alt 12. Sep 2008, 17:26
der code funktioniert.

Delphi-Quellcode:
//Listet alle Namen von Ordnern in einem Verzeichnis
procedure ListSubDirs(sDir: string; const sList: TStrings);
var Rec: TSearchRec;
begin
  sList.BeginUpdate;
  try
    sList.Clear;
    if FindFirst(IncludeTrailingPathDelimiter(sDir) + '*.*', faDirectory or faReadOnly or faHidden or faArchive, Rec) = 0 then
    begin
      repeat
        if (((Rec.Attr and faDirectory) = faDirectory) and (Rec.Name <> '.') and (Rec.Name <> '..')) then sList.Add(Rec.Name);
      until FindNext(Rec) <> 0;
      SysUtils.FindClose(Rec);
    end;
  finally
    sList.EndUpdate;
  end;
end;
je nach dem was du nun machen willst, ist dieser code umzuschreiben oder nicht. so wie es in der ersten zeile steht, werden alle ordnernamen eines verzeichnisses in der sList:TStrings gelistet.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: Ordnernamen auslesen

  Alt 12. Sep 2008, 18:25
Hab ich schonmal gesehen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#4

Re: Ordnernamen auslesen

  Alt 24. Apr 2009, 21:54
So, ich hab jetzt folgenden Code um Ordnernamen auszulesen.

Delphi-Quellcode:
procedure ListSubDirs(sDir: string; const sList: TStrings);
var Rec: TSearchRec;
begin
  sList.BeginUpdate;
  try
  // sList.Clear;
    if FindFirst(IncludeTrailingPathDelimiter(sDir) + '*.*', faDirectory or faReadOnly or faHidden or faArchive, Rec) = 0 then
    begin
      repeat
        if (((Rec.Attr and faDirectory) = faDirectory) and (Rec.Name <> '.') and (Rec.Name <> '..')) then sList.Add(Rec.Name);
      until FindNext(Rec) <> 0;
      SysUtils.FindClose(Rec);
    end;
  finally
    sList.EndUpdate;
  end;
end;
Allerdings werden keine Unterordner mit ausgelesen (Das bissel umständlich). Was ich jetzt aber möchte, ist das nur die Ordnernamen ausgelesen werden, in der eine Datei von einem bestimmten Dateityp ist. (BSP: .txt , .doc, .rtf etc)

EDIT: Die procedure ist in einer DLL und wird zur Laufzeit
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Ordnernamen auslesen

  Alt 25. Apr 2009, 01:03
Dann musst du eben in jedem Ordner noch nach den enthaltenen Dateien schauen. Ein Beispiel grundsätzlich dafür siehst du z.B. hier:
http://www.delphipraxis.net/internal...=392510#392510
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: Ordnernamen auslesen

  Alt 25. Apr 2009, 10:31
Meinst Du so etwas?
Delphi-Quellcode:
procedure ListSubDirsContainingFiles(StartPath: string;
                                     const Extension: string;
                                     const sList: TStrings);
var Rec: TSearchRec;
    FileFound: Boolean;
begin
  //Bei ungültigem Verzeichnis Exception auslösen
  if not DirectoryExists(StartPath) then
    raise Exception.CreateFmt('Verzeichnis "%s" existiert nicht.',
                              [ExcludeTrailingPathDelimiter(StartPath)]);
  //Sicherstellen, dass Verzeichnisname mit Backslash endet
  StartPath := IncludeTrailingPathDelimiter(StartPath);
  //lokale Variable initialisieren
  FileFound := false;
  //im aktuellen Verzeichnis nach Dateien mit der angegebenen Endung suchen
  if FindFirst(StartPath + Extension,faAnyFile,Rec) = 0 then
    try
      repeat
        //nur Dateien, keine Verzeichnisse
        FileFound := (Rec.Attr and faDirectory) = 0;
      until FileFound or (FindNext(Rec) <> 0);
    finally
      SysUtils.FindClose(Rec);
    end;
  //bei Treffer Verzeichnis zur Liste hinzufügen
  if FileFound then
    sList.Add(ExcludeTrailingPathDelimiter(StartPath));
  //nun nach Unterverzeichnissen suchen und rekursiv durchgehen
  if FindFirst(StartPath + '*',faDirectory,Rec) = 0 then
    try
      repeat
        if ((Rec.Attr and faDirectory) = faDirectory) and
           (Rec.Name <> '.') and (Rec.Name <> '..') then
          ListSubDirsContainingFiles(StartPath + Rec.Name,Extension,sList);
      until FindNext(Rec) <> 0;
    finally
      SysUtils.FindClose(Rec);
    end;
end;
Ich hoffe, ich habe verständlich kommentiert. Evtl. kann das noch optimiert werden, aber es funktionierte zumindest in kurzen Tests
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#7

Re: Ordnernamen auslesen

  Alt 26. Apr 2009, 11:21
Sry, hatte gar nicht gesehen, das jdn geantwortet hat. War nicht als neues Beitrag makiert.

Danke, DeddyH genau sowas meinte ich! DANKE!
  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:54 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