AGB  ·  Datenschutz  ·  Impressum  







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

Nach Dateien suchen

Ein Thema von Dragon27 · begonnen am 27. Aug 2006 · letzter Beitrag vom 28. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Nach Dateien suchen

  Alt 27. Aug 2006, 18:54
Hallo,

habe nun heute schon mehrere Möglichkeiten gesehen wie man nach Dateien suchen kann. Jedoch hab ich das Ganze nicht so ganz verstanden. Ich möchte eigentlich nur ein Verzeichnis nach einer Datei durchsuchen. Also z. B. wenn ich in der Suche "Tomat" eingebe dann sollen mir folgende Dateien angezeigt werden:

-Tomate.mp3
-Tomatensuppe.wav
-etc..

Wer kann mir da ne Lösung sagen?

Danke...


Dragon27

P.s.: Vielleicht sollte man noch eine Maske eingeben können für *.wav und *.mp3.
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 19:19
tsearchrec aus den sysutils sollte dir helfen
oder du schaust dir einmal twin32finddata (windowsapi) an.

eine suche nach diesem thema in diesem forum/google bringt dir zig ergebnisse...
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 19:41
Hallo,

danke für deine Antwort nur wie gesasgt ich versteh das Ganze nicht so.....

ich möchte doch im Prinzip nur in ner Listbox dann die Dateien angezeigt bekommen.....

Danke
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 19:46
"verstehe ich nicht" gibts nicht - dann hat man sich noch nicht ausreichend mit der materie auseinandergesetzt.

man gibt einen pfad an ab dem man suchen will,
nutzt tsearchrec, findfirst, findnext, prüft die gefundenen sachem it faanyfile oder fafolder und gibt ergänzt bei einem ergebnis die listbox mit listbox.items.add(...)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 19:51
Hallo Dragon27,

vielleicht enthält die Komponente Delphi-Referenz durchsuchenTFileListBox bereits alles, was du benötigst.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 21:48
Hallo,

die Verwendung von TSearchRec ist eigentlich ganz einfach. Trotzdem hier ein Beispiel für dich.

Delphi-Quellcode:
function SearchMask(Root: string; Mask: string; Recursively: Boolean = false): TStrings;
var SRec: TSearchRec;
    FindPath: string;
begin
  Result := TStringList.Create;
  Root := IncludeTrailingPathDelimiter(Root) // abschließenden Backslash hinzufügen
  FindPath := Root + Mask;
  FindFirst(FindPath, faDirectory, SRec); //Suche initialisieren
  repeat
    if (SRec.Attr and faDirectory <> 0) and Recursively then
      Result.AddStrings(SearchMask(Root + SRec.FileName + '\' + Mask)) //rekursieren
    else
      Result.Add(Root + SRec.FileName); //Kompletten Dateipfad zum Ergebnis hinzufügen
  while FindNext(SRec) = 0; //FindeNext gibt 0 zurück wenn es keinen Fehler gibt
  FindClose(SRec); //Ende der Suche
end;
Du kannst das so in eine Listbox bringen:

  ListBox1.Items.AddStrings('C:\irgendwo\','Musik*'); Optional werden auch alle unterordner durchsucht.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 22:05
Lukas, du solltest den Code noch einmal prüfen, der Compiler wird ihn inklusive Beispielaufruf zurückweisen. Zudem erzeugen die rekursiven Aufrufen Stringlisten, die nicht wieder freigegeben werden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 22:08
ok... mach ich...

EDIT: hast recht... waren einige unangenehme sachen drin...

Delphi-Quellcode:
function TForm2.SearchMask(Root: string; Mask: string; Recursively: Boolean = false): TStrings;
var SRec: TSearchRec;
    FindPath: string;
    Temp: TStrings;
begin
  Result := TStringList.Create;
  Root := IncludeTrailingPathDelimiter(Root); // abschließenden Backslash hinzufügen
  FindPath := Root + Mask;
  FindFirst(FindPath, faDirectory, SRec); //Suche initialisieren
  repeat
    if (SRec.Attr and faDirectory <> 0) and (SRec.Name <> '.') and (SRec.Name <> '..') and Recursively then
      begin
        Application.ProcessMessages;
        Temp := SearchMask(Root + SRec.Name,Mask,true);
        Result.AddStrings(Temp); //rekursieren
        Temp.Free;
      end
    else
      Result.Add(Root + SRec.Name); //Kompletten Dateipfad zum Ergebnis hinzufügen
  until FindNext(SRec) <> 0; //FindNext gibt 0 zurück wenn es keinen Fehler gibt
  FindClose(SRec); //Ende der Suche
end;
dazu hätt ich jetzt aber selber ne Frage:

Kann das sein, dass der die Verzeichnisse auch nur rausgibt, wenn sie mit der Maske übereinstimmen?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Nach Dateien suchen

  Alt 27. Aug 2006, 23:10
Ja, normalerweise benötigt man zwei Durchläufe pro Verzeichnis. Im ersten werden die Unterordner gesucht, im zweiten die Dateien (siehe hier). Daß es aber auch mit einem Durchlauf geht, zeigt dieser Beitrag.

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

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

Re: Nach Dateien suchen

  Alt 28. Aug 2006, 01:21
Moin Lukas,

ich hätte da ein paar Verbesserungsvorschläge

Bei FindFirst prüfst Du nicht, ob der Aufruf erfolgreich war.
Resourcenschutzblock fehlt.
TStrings würde ich nicht als Rückgabewerte nehmen, sondern als Parameter übergeben. Als Rückgabewert einer Funktion handelt man sich zu leicht ein Speicherleck ein.
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
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 00:53 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