AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem beim auflisten von dateien in verzeichnissen
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim auflisten von dateien in verzeichnissen

Ein Thema von dopeline · begonnen am 28. Jun 2004 · letzter Beitrag vom 28. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 10:05
Hallo!

Ich benutze folgenden Code:

-----Alle Dateien in einem Verzeichnis und dessen Unterverzeichnisse suchen-----
Delphi-Quellcode:
procedure GetAllFiles(mask: string);
var Search: TSearchrec;
  verz: string;
  such: string;

begin
  such := ExtractFileName(mask);
  verz := ExtractFilepath(mask);
  if verz[length(verz)] <> '\then verz := verz + '\';
{ alle Dateien suchen }
  if FindFirst(mask, $23, Search) = 0 then
  repeat
      Form1.listbox1.items.add(verz + Search.Name);

  until FindNext(Search) <> 0;
  { Unterverzeichnisse durchsuchen }
  if FindFirst(verz + '*.*', fadirectory, Search) = 0 then
   begin;
    repeat
      if ((search.attr and fadirectory) = fadirectory) and (search.name[1] <> '.') then
        GetAllFiles(verz + Search.Name + '\' + such);
    until FindNext(Search) <> 0;

  end;
  Findclose(Search);
end;
-----Ein Fenster öffnen, in dem man ein Verzeichnis auswählen kann-----
Delphi-Quellcode:
function OpenFolder(root: Integer; Caption: string): string;
var
  bi: TBrowseInfo;
  lpBuffer: PChar;
  pidlPrograms, pidlBrowse: PItemIDList;
begin
  if (not SUCCEEDED(SHGetSpecialFolderLocation(GetActiveWindow, root,
    pidlPrograms))) then
    exit;
  lpBuffer := StrAlloc(MAX_PATH);
  bi.hwndOwner := GetActiveWindow;
  bi.pidlRoot := pidlPrograms;
  bi.pszDisplayName := lpBuffer;
  bi.lpszTitle := PChar(Caption);
  bi.ulFlags := BIF_RETURNONLYFSDIRS;
  bi.lpfn := nil;
  bi.lParam := 0;

  pidlBrowse := SHBrowseForFolder(bi);
  if (pidlBrowse <> nil) then
    if SHGetPathFromIDList(pidlBrowse, lpBuffer) then
      Result := lpBuffer;
  StrDispose(lpBuffer);
end;
Beim Klick auf diesen Button alle gefundenen Dateien in eine CheckListBox einfügen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 GetAllFiles(OpenFolder(CSIDL_DRIVES,'Verzeichnisse auswählen')+'\*.mp3');
 SendMessage(ListBox1.Handle,LB_DIR,DDL_ARCHIVE or DDL_HIDDEN or DDL_READONLY or DDL_READWRITE or DDL_SYSTEM,lParam(PChar(pfad+'\*.*')));
end;
Nun habe ich folgendes Problem:
Nach dem Ausführen werden in der CheckListBox alle gefundenen Dateien angezeigt, allerdings ohne den pfad. Nur die Datei namen. Also aus 'D:\Eigene Dateien\Musik\Track01.mp3' wird 'Track01.mp3'.
Wie muss ich den Code ändern, damit der vollständige Pfad angezeigt wird? Vielleicht sollte ich dazusagen, dass ich die Codes aus diesem Forum habe, sie also nicht von mir geschrieben wurden. Ich vermute, das das Problem bei dem 'SendMessage' in Button1Click liegt.

Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von NicNacMan
NicNacMan

Registriert seit: 28. Mai 2004
Ort: Hamburg
98 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 10:21
also bei mir funzts!
aber wieso einfach wenns auch kompliziert geht

Delphi-Quellcode:
uses
  FileCtrl;

{...}

procedure ScanDirectory(mask : String);
var
  search : TSearchRec;
  verz, such: String;
begin
  such := ExtractFileName(mask);
  verz := ExtractFilePath(mask);
  if verz[length(verz)] <> '\then
    verz := verz + '\';
  if (FindFirst(mask, faAnyFile, search) = 0) then
    repeat
      Form1.ListBox1.Items.Add(verz + search.Name);
    until (FindNext(search) <> 0);
  if (FindFirst(verz + '*.*',fadirectory,search) = 0) then
    begin
      repeat
        if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
          ScanDirectory(verz + search.Name + '\' + such);
      until (FindNext(search) <> 0);
      FindClose(search);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  path: String;
begin
  if SelectDirectory('Ordner wählen', '', path) then
    ScanDirectory(path+'*.mp3');
end;
The Double-Crunch-Peanuts!
SwapIt:
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 10:42
Hi NicNacMan,

kannst du die SelectDirectory-Prozedur noch posten? ich bekomme trotzdem nur die dateienamen. vielleicht giegt es an meiner OpenFolder-Funktion...

Danke!


Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von NicNacMan
NicNacMan

Registriert seit: 28. Mai 2004
Ort: Hamburg
98 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 12:20
hi,

komisch, ich hab deinen code 1:1 kopiert, und es funzt.

die selectdirectory procedur ist in der filectrl unit
die is doch bei D7 dabei, oder

cu nicnacman
The Double-Crunch-Peanuts!
SwapIt:
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 12:32
Das ist ja merkwürdig... Ich habe den Code genau, wie du es beschrieben hast! ich habe die ScanDirectory-Prozedur und im ButtonClick steht auch das selbe...

Bei mir wird nichts in die ListBox geladen...
Könnte das eventuell damit zusammenhängen, dass es sich bei der ListBox um eine CheckListBox handelt? der Name ist 'ListBox1'


Gruß, dopeline
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 12:35
Moin Zusammen,

nur weil's mir gerade auffällt:

Diese Abfrage

... and (search.name[1] <> '.') ... ist falsch.

Es muss explizit

... and (search.name <> '.') and (search.name <> '..') ... abgefragt werden, da Datei-/Verzeichnisnamen durchaus mit einem führenden Punkt beginnen können.
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
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 12:39
Moin Dopeline,

Zitat von Dopeline:
Wie muss ich den Code ändern, damit der vollständige Pfad angezeigt wird?
lass mal Deine Sendmessage Zeile weg.
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
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 12:49
Das ist ja verrückt!
Ich habe die SendMessage-Zeile weggelassen. Wenn ich direkt Laufwerk D zum Durchsuchen auswähle, listet er alle MP3s auf. Wenn ich aber einen Unterordner zum Durchsuchen angebe, passiert gar nichts!

Also nur C:\ oder D:\ aber nicht C:\Musik\


Ist das eine Windows-Macke? Oder woran liegt das?


Gruß, dopeline
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 12:54
Moin dopeline,

ersetz jetzt noch einmal im zweiten FindFirst das faDirectory durch faAnyfile.
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
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Problem beim auflisten von dateien in verzeichnissen

  Alt 28. Jun 2004, 13:12
Hmm... Da passiert immer noch nichts...

Ich habe mal das Projekt zusammen mit einer Komponente in den Anhang gesteckt...
Angehängte Dateien
Dateityp: zip music_randomizer.zip (916,0 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:01 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