| Autor |
Beitrag |
SQLException
      
Beiträge: 89
WinXP + D5 Enterprise
Win2k + D6 Personal
|
Verfasst: Mi 18.05.05 00:01
abend.
man betrachte bitte mein letztes posting:
www.delphi-forum.de/viewtopic.php?t=41815
wie kann ich z. b. nach MP3s und WMVs gleichzeitig suchen/anzeigen lassen?
oder: wie kann ich alle dateien (ob mp3 oder wmv) anzeigen lassen, nur keine ordner? da ich ein verzeichnis nur mit mp3s und wmvs habe, wäre das auch ok.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 18.05.05 08:14
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73:
| function GetAllFiles(Suchmaske1, Suchmaske2: String; var Ergebnisliste: TStringList; IncludeSubDirs: Boolean): Boolean; overload; var Search: TSearchRec; Verzeichnis, Dateimaske: String; begin Result:=False; Dateimaske := ExtractFileName(Suchmaske); Verzeichnis := ExtractFilepath(Suchmaske); Verzeichnis:=IncludeTrailingPathDelimiter(Verzeichnis); If FindFirst(Suchmaske1, $23, Search)= 0 then begin repeat Application.ProcessMessages; Ergebnisliste.Add(Verzeichnis+Search.Name); Result:=True; until FindNext(Search)<>0; end; SysUtils.FindClose(Search); If FindFirst(Suchmaske2, $23, Search)= 0 then begin repeat Application.ProcessMessages; Ergebnisliste.Add(Verzeichnis+Search.Name); Result:=True; until FindNext(Search)<>0; end; SysUtils.FindClose(Search); If IncludeSubDirs then If FindFirst(Verzeichnis + '*.*',fadirectory, Search)= 0 then begin repeat If((search.attr and fadirectory)=fadirectory) and(search.name[1]<>'.') then begin If GetAllFiles(Verzeichnis+ Search.Name + '\' + Dateimaske, Ergebnisliste,True) then Result:=True; end; Application.ProcessMessages; until FindNext(Search) <> 0; end; SysUtils.FindClose(Search); end; |
Hab das jetzt on-the-fly beim Posten für mehrere Suchmasken verändert, ich hoffe der Aufruf mit folgenden Parametern geht und ich hab nix vergessen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var Results: TStringList; begin Results := TStringList.Create; if GetAllFiles('c:\test\*.mp3', 'c:\test\*.wma', Results, False) then ShowMessage('Dateien gefunden:' + #13 + Results.Text); Results.Free; end; |
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 18.05.05 08:39
Wie steht´s damit? Ist seit 2003 in den FAQs. 
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Mi 18.05.05 09:58
SQLException hat folgendes geschrieben: | | wie kann ich z. b. nach MP3s und WMVs gleichzeitig suchen/anzeigen lassen? |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure FindFiles(const Path: String; const Ext: array of String; Result: TStrings);
procedure SearchFiles(const Path: String; const Ext: array of String; Result: TStrings); var SR: TSearchRec; I: Integer; begin if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then begin repeat if (SR.Name <> '.') and (SR.Name <> '..') then begin if (SR.Attr and faDirectory) = faDirectory then SearchFiles(IncludeTrailingPathDelimiter(Path + SR.Name), Ext, Result) else for I := Low(Ext) to High(Ext) do if SameText(Ext[I], ExtractFileExt(SR.Name)) then begin Result.Add(Path + SR.Name); Break; end; end; until FindNext(SR) <> 0; FindClose(SR); end; end;
begin Result.Clear; SearchFiles(IncludeTrailingPathDelimiter(Path), Ext, Result); end; |
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin FindFiles('C:\MeinOrdner', ['.mp3', '.wmv'], ListBox1.Items); end; |
_________________ Ciao, Sprint.
|
|
SQLException 
      
Beiträge: 89
WinXP + D5 Enterprise
Win2k + D6 Personal
|
Verfasst: Mi 18.05.05 13:20
|
|
|