AGB  ·  Datenschutz  ·  Impressum  







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

Findfirst/Findnext-Suchmaske

Ein Thema von godlike · begonnen am 12. Aug 2007 · letzter Beitrag vom 13. Aug 2007
Antwort Antwort
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#1

Findfirst/Findnext-Suchmaske

  Alt 12. Aug 2007, 21:09
Hallo Leute,

Ich habe mich schon vor relativ langer Zeit hier im Forum mal angemeldet, der Grund wieso ich bis jetzt nie geschrieben habe, ist die fehlende Zeit. Mit der Lehre und Fitnesstraining in der Freizeit etc. bleibt leider nicht mehr viel übrig. Besonders wenn man dann auch noch auf einem anderen Board aktiv sein muss und gerne mal ab und an was programmiert, wird's halt immer weniger. Auch wenn ich eigentlich viel lieber ein bisschen mehr hier wäre und mich in die Community integrieren möchte, geht's momentan recht schlecht. Naja, trotz meiner mangelnden Aufmerksamkeit, die ich dem Board hier widme, hoffe ich trotzdem, dass mir jemand bei meiner Frage helfen kann.

Ich schreibe momentan ein Programm, welches gesuchte Dateien (anhand von einer benutzerdefinierten Suchmaske) auflistet. Mein Problem ist nun:

Bei Findfirst kann man ja als Parameter zum Path (z.B. C:\mp3) noch die Dateisuchmaske (z.B. *.mp3) angeben. Somit werden ja nur die mp3-files aufgelistet. Wenn ich nun aber mehrere Extensions in die Suche aufnehmen will (also z.B. *.mp3/*.mp4), wie kann ich das in einer Suche verwirklichen?

Die einzige Idee die mir kam wäre den Filter *.* zu verwenden und einfach alle Extensions mit denen, die in der Suchmaske enhalten sind, zu vergleichen und die passenden rauszupicken.

Ich frage mich nun, ob's da nicht eine einfachere/schönere Lösung gäbe...

Hoffe ihr könnt mir helfen, danke schonmal im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Findfirst/Findnext-Suchmaske

  Alt 12. Aug 2007, 21:28
ich wüsste auch nur die von dir genannte lösung und habe es bisher auch immer so gemacht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#3

Re: Findfirst/Findnext-Suchmaske

  Alt 12. Aug 2007, 22:39
Hmm, schade.

Naja, dann mach ich's eben so, wie ich vorhin sagte. Danke trotzdem.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 08:45
Ich glaube Find... unterstützt mehrere Suchstrings mit ; getrennt. Allerdings noch nie verwendet und nicht sicher ob es wirklich so ist. Zu dem weiß ich nicht, wie es sich mit der Suche in Verzeichnissen verhält. Also ob man bei jeder Suchmaske auch das Verzeichnis angeben muss oder einmal das Verzeichnis reicht und dann immer nur die Suchmasken.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 09:31
hi,

warum machst du nicht zuerst einen suchlauf mit *.mp3 und dann noch einen mit *.mp4
der benutzer müsste dann das gewünschte ergebnis bekommen, und du müsstes im programm immer nur die suchfunktion aufrufen?!!!
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 09:38
Die Suchmaske "*.mp?" dürfte deinem Ziel am nächsten kommen. Aber mehrere voneinander getrennte suchmasken gibts nicht. Es gibt allerdings keine Performanceeinbußen, wenn man die einzelnen Suchmasken hintereinander durchläuft.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#7

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 20:04
Keine Performanceeinbussen wenn man mehrere Suchen durchführt, als nur eine? Hmm, kommt mir zwar fast ein bisschen spanisch vor... aber werde ich mal testen. Wenn das wirklich gleich schnell geht, dann erspart mir das eine menge Arbeit. Danke für die Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 20:24
Zitat von godlike:
Keine Performanceeinbussen wenn man mehrere Suchen durchführt, als nur eine? Hmm, kommt mir zwar fast ein bisschen spanisch vor... aber werde ich mal testen. Wenn das wirklich gleich schnell geht, dann erspart mir das eine menge Arbeit. Danke für die Antworten!
Ich denke, diese Aussage trifft auf Windows XP und später zu (evtl. auch für Win2000), da hier der Cache verwendet wird, der wirklich sehr, sehr schnell ist (kann ich auch bestätigen!). Allerdings meine ich hier schon einmal die Auskunft bekommen zu haben, daß Win98 wohl jedes mal von "vorne" anfangen muss. Falls Du als Zielplattform also Win98 hast, prüfe lieber zuvor, ob es dort auch erträglich lange dauert. Sonst musst Du Dir wohl keine große Sorgen machen, ein paar ms hin oder her sind doch wirklich nicht schlimm

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 20:41
Hallo,

man kann es zu Fuß machen - oder man verwendet eine Komponente:

Delphi-Quellcode:
function GetFiles(const dir, masks: string; s: TStrings = nil): Integer;
begin
  with TFileListBox.CreateParented(HWND(-3)) do
  try
    Mask := masks;
    Directory := dir;
    FileType := [ftArchive];
    Result := Items.Count;
    if Assigned(s) then
      s.Assign(Items);
  finally
    Free;
  end;
end;

{
var
  s: TStrings;
  n: Cardinal;
begin
  s := TStringList.Create;
  n := GetFiles('c:\audio', '*.mp3;*.mp4', s);
  ShowMessage(IntToStr(n) + sLineBreak + s.Text);
  s.Free;
end;
}
Grüße vom marabu
  Mit Zitat antworten Zitat
godlike

Registriert seit: 11. Feb 2007
12 Beiträge
 
#10

Re: Findfirst/Findnext-Suchmaske

  Alt 13. Aug 2007, 23:00
Zitat:
Falls Du als Zielplattform also Win98 hast
Hehehe, nein, das ist weniger meine Zielplattform... ich denke aus diesem Jahrhundert sind wir langsam raus.

Zitat von marabu:
Hallo,

man kann es zu Fuß machen - oder man verwendet eine Komponente:

Delphi-Quellcode:
function GetFiles(const dir, masks: string; s: TStrings = nil): Integer;
begin
  with TFileListBox.CreateParented(HWND(-3)) do
  try
    Mask := masks;
    Directory := dir;
    FileType := [ftArchive];
    Result := Items.Count;
    if Assigned(s) then
      s.Assign(Items);
  finally
    Free;
  end;
end;

{
var
  s: TStrings;
  n: Cardinal;
begin
  s := TStringList.Create;
  n := GetFiles('c:\audio', '*.mp3;*.mp4', s);
  ShowMessage(IntToStr(n) + sLineBreak + s.Text);
  s.Free;
end;
}
Grüße vom marabu
Hört sich vielversprechend an... oder besser "gesagt", sieht vielversprechend aus... Hoffe dass ich am Mittwochabend wieder Zeit zum Proggen habe, dann probiere ich beide Wege mal aus. Danke euch, Leute! Echt ein supi Forum!
  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 08:51 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