![]() |
Die Maske mit mehreren Strings vergleichen!!!!
Hi, bin gerade dabei einen kleinen Video und Audio player zu basteln.Ich habe folgendes Problem.
Mit Open Dialog werden Audio sowie Video dateien einem ListBox hinzugefügt. Ich will das mit Klick auf entsprechende Datei die abgespielt wird. Allerdings für Audiodateien benutze ich BassDLLPlayer und für Video das DSPack.
Delphi-Quellcode:
Wie kann ich meine Maske mit BassDLLPlayer Filter vergleichen bzw mit FilterGraph.Filter??
procedure TForm2.ListBox1OnClick(Sender:TObject);
var filename,maske:String; V :Integer; begin if ListBox1.Items.Count > 0 then begin Datei_aus_Liste := ausgewaehlt; maske:=ExtractFileExt(ListBox1.Items[Datei_aus_Liste]);// z.B .mp3 oder .wma auch mpeg usw. filename:=ListBox1.Items[Datei_aus_Liste]; V:=CompareStr('.mp3',maske);//mit einzelnem Vergleich funzt auch.an der Stelle will ich if V=0 then //vergleichen ob es sich um Audio oder Videodatei handelt!!! begin Form1.Player.LoadFromFile(filename);// BassDLLPlayer oder FilterGraph1? Form1.Player.Play; end; end; end; Vielen Dank im Voraus. |
Re: Die Maske mit mehreren Strings vergleichen!!!!
Zitat:
Sind es Megen? Dann könntest Du mit
Delphi-Quellcode:
in den Mengen (sets) schauen ob die gesuchte FileExtension sich darin befindet.
if ExtractFileExt(ListBox1.Items[Datei_aus_Liste]) in BassDllPlayer.Filter then
// spiele Audiofile else if ExtractFileExt(ListBox1.Items[Datei_aus_Liste]) in FilterGraph.Filter then // spiele Videofile Ansonsten solltest Du Dein Problem etwas genauer formulieren und mit mehr Informationen darstellen. Grüße Klaus |
Re: Die Maske mit mehreren Strings vergleichen!!!!
Hallo Klaus
es ist folgendes:wenn ich eine Audiodatei in der ListBox anklicke soll sie mit BassDLLPlayer abgespielt werden und wenn es sich um eine Videodatei handelt mit DSPack. Der Ansatz von dir war schon i.O. nur leider gibt er bei FilterGraph.Filter und BassDllPlayer.Filter fehlermeldung:'Undefinierter Bezeichner Filter' raus! Mit Filter meine ich abspielbare Dateien! Ich habe quasi Filter für Audiodateien in openDialog1 festgelegt wiefolgendes: *.mp3;*.wma;*.wav;*.ogg; und für Videodateien in OpenDialog2 wie folgt: *.mpg;*.mpeg;*.avi;*.divx;*.xvid; Habe dann folgendes versucht:
Delphi-Quellcode:
Filter: TFilterGraph;
Player: TBassdllPlayer; ... if ExtractFileExt(ListBox1.Items[Datei_aus_Liste]) in Form1.OpenDialog1.Filter then//Form1.Player.Filter begin Form1.Player.LoadFromFile(ListBox1.Items[Datei_aus_Liste]); Form1.Player.Play; end; if ExtractFileExt(ListBox1.Items[Datei_aus_Liste]) in Form1.OpenDialog2.Filter then//Form1.Filter.Filter begin Form1.Window.Visible:=True; Form1.Filter.RenderFile(ListBox1.Items[Datei_aus_Liste]); Form1.Filter.Play end; Immer noch Frage 2: Wie kann man ganze Folder einer ListBox hinzufügen mittels OpenDialog nicht immer einzelne Musik oder Videodateien? MfG |
Re: Die Maske mit mehreren Strings vergleichen!!!!
Delphi-Quellcode:
Mit der obigen Funktion kannst Du einen Ordner öffnen.
function BrowseDialog(const Title: string; const Flag: integer): string;
var lpItemID : PItemIDList; BrowseInfo : TBrowseInfo; DisplayName : array[0..MAX_PATH] of char; TempPath : array[0..MAX_PATH] of char; begin Result:=''; FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); with BrowseInfo do begin hwndOwner := Application.Handle; pszDisplayName := @DisplayName; lpszTitle := PChar(Title); ulFlags := Flag; end; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); Result := IncludeTrailingBackslash(TempPath); GlobalFreePtr(lpItemID); end; end; //BrowseDialog Mit FindFirst und FindNext kannst Du dann in dem Ordner nach den gewünschten Files suchen. Ein Beispiel für mp3 Files:
Delphi-Quellcode:
Wenn Du auch noch Unterverzeichnisse durchsuchen möchtest
procedure GetMP3FilesInDirectory(StartDir: string; AMask: String);
var SR: TSearchRec; // ID3: TID3Rec; begin if (StartDir <> '') and (StartDir[length(StartDir)]<>'\') then StartDir:=StartDir+'\'; if (FindFirst(StartDir+AMask,faAnyFile-faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') and (SR.Name<>StartDir) then BEGIN new_element(listelement,first_listelement,last_listelement); // Form2.testbox.items.add(ID3.title+' '+ID3.artist); With listelement^ DO BEGIN location:=StartDir+SR.Name; FillID3TagInformation(StartDir+SR.Name,ID3Info) END; END; until FindNext(SR)<>0; FindClose(SR); end; if (FindFirst(StartDir+'*.*',faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') then GetMP3FilesInDirectory(StartDir+SR.Name,AMask); until FindNext(SR)<>0; FindClose(SR); end; end; mußt Du das ganze so ändern das eine rekursive Suche möglich wird. Ansonsten wirst Du hier im Forum auch noch genügend andere Beispeile für FindFirst und FindNext finden. Ergänzung: Da der Filter des TOpenDialogs ein String ist, kannst Du auch mit dieser Methode feststellen ob Deine DateiExtension in dem Filter aufgelistet ist.
Delphi-Quellcode:
Grüße
if pos(ExtractFileExt(ListBox1.Items[Datei_aus_Liste]),OpenDialog2.Filter) <> 0 then
//video else if pos(ExtractFileExt(ListBox1.Items[Datei_aus_Liste]),OpenDialog1.Filter) <> 0 then //audio Klaus |
Re: Die Maske mit mehreren Strings vergleichen!!!!
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Pinki,
mein Vorschlag für deinen Test der Datei-Erweiterung:
Delphi-Quellcode:
Für die Übernahme eines ganzen Ordners würde ich das Flag ofAllowMultiSelect setzen.
function CheckExt(const fn: TFileName; const extensions: String): Boolean;
begin with TStringList.Create do try Delimiter := ';'; DelimitedText := extensions; Result := IndexOf('*' + ExtractFileExt(fn)) > -1; finally Free; end; end; Gute Nacht |
Re: Die Maske mit mehreren Strings vergleichen!!!!
Hi Marabu,netter Proggi
mein Delphi 5 spuckt Fehlermeldung
SQL-Code:
und
Undefinierter Bezeichner Delimiter
SQL-Code:
Laut DH kennt er nur LastDelimiter oder so :gruebel:
Undefinierter bezeichner DelimitedText
|
Re: Die Maske mit mehreren Strings vergleichen!!!!
Zitat:
|
Re: Die Maske mit mehreren Strings vergleichen!!!!
Hi,
es hat prima geklappt und ganz einfach :-D (wenn man weiss wie es geht :) ) Zitat:
Folder hinzufügen habe ich mit Hilfe von JvDirectoryListBox und FileListBox erledigt.Vielleicht nicht Ellegant aber erfüllt den Zweck :angel2: |
Re: Die Maske mit mehreren Strings vergleichen!!!!
Hi mkinzler
Zitat:
Naja muss mit meinem alten D5 klar kommen :gruebel: MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 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