![]() |
Festplatte durchsuchen lassen???
Hi Leutz, :-D
Wie kann ich es machen das mein programm die festplatte nach audio dateien sucht und diese in eine listbox anzeigt oder speichert? Gruss Bernd, :coder2: |
Re: Festplatte durchsuchen lassen???
FindFirst, FindNext, FindClose.
|
Re: Festplatte durchsuchen lassen???
|
Re: Festplatte durchsuchen lassen???
hallo,
danke für eure schnelle antwort ich hätte da noch ne frage wie rufe ich die procedure auf ? gruss bernd |
Re: Festplatte durchsuchen lassen???
Zitat:
Sakura hat im ersten Posting genau beschrieben, wie die Funktion aufzurufen ist. Ich weiß nicht wo das Problem liegt :gruebel: Greetz alcaeus |
Re: Festplatte durchsuchen lassen???
hallo
ich habe eine listbox in der die dateien angezeigt werden sollen die auf der hd gefunden wurden wen ich die procedure die mir shmia vorgeschlagen hat so übernehme wie sie dort steht passiert logischer weise garnix also hab ich da was vergessen oder die falsche kompo weis ich nicht hab mich mit sowas nie befasst. gruss bernd |
Re: Festplatte durchsuchen lassen???
Nimm den zweiten Code und gib als ersten Parameter
Delphi-Quellcode:
an, das sollte funktionieren.
ListBox1.Items
Greetz alcaeus |
Re: Festplatte durchsuchen lassen???
Delphi-Quellcode:
Form1.Memo1.Lines.Add(RootFolder + SR.Name); // <---- Das
end; until FindNext(SR) <> 0; durch deine Listbox oder was auch immer ersetzen |
Re: Festplatte durchsuchen lassen???
hallo alcaeus, :hi:
soll ich es hier einfügen:
Delphi-Quellcode:
gruss aus berlin :gruebel:
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
|
Re: Festplatte durchsuchen lassen???
Nein, du solltest den Begriff "Memo1" im Beispielcode durch den Namen deiner ListBox (oder was auch immer ersetzen). :roll: Steht doch da ...
|
Re: Festplatte durchsuchen lassen???
hab ich gemacht aber die listbox bleibt leer. :roll:
Delphi-Quellcode:
:wall:procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True); var SR: TSearchRec; begin IncludeTrailingPathDelimiter(RootFolder); if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then // --> ein Verzeichnis wurde gefunden // der Verzeichnisname steht in SR.Name // der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist // RootFolder + SR.Name if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin // --> eine Datei wurde gefunden // der Dateiname steht in SR.Name // der vollständige Dateiname (inkl. Pfadangabe) ist // RootFolder + SR.Name Form1.ListBox1.Items.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; |
Re: Festplatte durchsuchen lassen???
Ich zitiere mal die Mieze:
Zitat:
Greetz alcaeus |
Re: Festplatte durchsuchen lassen???
hi,
na den code hab ich doch da steht doch schon form1.listbox1.items.add gucks du
Delphi-Quellcode:
procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True); var SR: TSearchRec; begin IncludeTrailingPathDelimiter(RootFolder); if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then // --> ein Verzeichnis wurde gefunden // der Verzeichnisname steht in SR.Name // der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist // RootFolder + SR.Name if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin // --> eine Datei wurde gefunden // der Dateiname steht in SR.Name // der vollständige Dateiname (inkl. Pfadangabe) ist // RootFolder + SR.Name Form1.ListBox1.Items.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; |
Re: Festplatte durchsuchen lassen???
Scroll im oben verlinken Thread mal runter. Da findest Du den (meinen) Code, den alcaeus gemeint hat, auch.
Guckst Du:
Delphi-Quellcode:
mfG
procedure FileList(const APath, AExt: string; ARecurse: Boolean;
AList: TStrings); var F : TSearchRec; Path : string; begin Path := IncludeTrailingPathDelimiter(APath); // nur für Delphi 4 und höher! if (ARecurse) and (FindFirst(Path + '*.*', faAnyFile, F) = 0) then try repeat if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) = faDirectory) then FileList(Path + F.Name, AExt, ARecurse, AList); until FindNext(F) <> 0; finally FindClose(F); end; if FindFirst(Path + AExt, faAnyFile, F) = 0 then try repeat if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) <> faDirectory) then AList.Add(Path + F.Name); until FindNext(F) <> 0; finally FindClose(F); end; mirage228 |
Re: Festplatte durchsuchen lassen???
Zitat:
Delphi-Quellcode:
und rufe die Funktion so auf:
FileList.Add(RootFolder + SR.Name);
Delphi-Quellcode:
Das sollte dann klappen. Den zweiten Source musst du eben nicht anpassen, da er ja allgemein ist. Du musst einfach nur übergeben, wohin er die Strings kopieren soll.
procedure FindAllFiles(Form1.ListBox1.Items, <DeinPfad>, <DeineMask);
Greetz alcaeus |
Re: Festplatte durchsuchen lassen???
:hi: ich glaub ich lass es lieber ich bekomme es nicht auf die reihe dank euch trozdem.
gruss |
Re: Festplatte durchsuchen lassen???
die listbox bleibt troz allem leer kann nicht mal jemand die procedure posten für ne listbox.
für ganz doofe :wall: |
Re: Festplatte durchsuchen lassen???
Erst willst du aufgeben, 7 Minuten später doch nicht mehr.
Pushen ist auch innerhalb von 24 Stunden nicht gestattet. Mach es so, das geht 100%
Delphi-Quellcode:
Um mehrere Dateiendungen zu durchsuchen kannst du das ja hintereinander aufrufen.
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var SR: TSearchRec; begin RootFolder := IncludeTrailingPathDelimiter(RootFolder); if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin Form1.ListBox1.Items.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; procedure TForm1.Button1Click(Sender: TObject); begin FindAllFiles('f:\mp3s\', '*.mp3', true); end; |
Re: Festplatte durchsuchen lassen???
hi Martze ,
danke dir muss ich noch was beachten wen ich den code einfüge ? gruss bernd, :spin2: |
Re: Festplatte durchsuchen lassen???
Zitat:
Zitat:
Nein, du musst nichts beachten, alles in den implementation-Abschnitt. Eine ListBox auf's Formular. Und aufrufen muss du das natürlich nicht über einen Button, war nur ein Beispiel. |
Re: Festplatte durchsuchen lassen???
HI Matze,
habs mal ausprobiert listbox bleibt leer hier mal der code.
Delphi-Quellcode:
gruss berndunit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True); var SR: TSearchRec; begin RootFolder := IncludeTrailingPathDelimiter(RootFolder); if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin Form1.ListBox1.Items.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; procedure TForm1.Button1Click(Sender: TObject); begin FindAllFiles('c:\mp3s\', '*.mp3', true); end; end. |
Re: Festplatte durchsuchen lassen???
Hi,
heißt Dein Verzeichnis auch wirklich "C:\mp3s" ? mfG mirage228 |
Re: Festplatte durchsuchen lassen???
ups :oops: tutmirleid hab net aufgepasst
|
Re: Festplatte durchsuchen lassen???
habs mal probiert der compi reagiert darauf und sucht aber am ende bleibt die listbox leer.
gruss bernd |
Re: Festplatte durchsuchen lassen???
Der Code geht 100%, habe ihn selbst getestet. Hast du in dem Verzeichnis überhaupt MP3-Dateien drin?
Du kannst ja mal, nach
Delphi-Quellcode:
das hier testweise aufrufen, damit es gleich aktualisiert wird:
Form1.ListBox1.Items.Add(RootFolder + SR.Name);
Delphi-Quellcode:
Application.ProcessMessages;
|
Re: Festplatte durchsuchen lassen???
na ich hab c:\ eingeben um auf der gesamten hd zu suchen hat auch lange gedauert das er nach mp3 suchen soll hab ich auch drin gelassen.
gruss bernd |
Re: Festplatte durchsuchen lassen???
Supi Matze ,
mit [/delphi]Application.ProcessMessages;[delphi] Klapt es vielen dank . war ja wieder ne schwere geburt :balloon: gruss |
Re: Festplatte durchsuchen lassen???
Zitat:
Dann hat es davor auch geklappt, nur hast du das nicht gesehen. Wenn die Festplatte zuende zurchsucht worden wäre, hätte sich die ListBox aktualisiert und die Liste wäre da. So dauert es nun etwas länger, bis alles gefunden wurde. |
Re: Festplatte durchsuchen lassen???
ja genau konnte mal wieder bei mir nicht schnell genug gehen GROSSEN Dank an allen die mir geholfen haben. :hello:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 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