Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Musik Liste geht nich (https://www.delphipraxis.net/144344-musik-liste-geht-nich.html)

jonsen2.0.0.9 5. Dez 2009 19:59


Musik Liste geht nich
 
Hallo,

so hab da ma versucht nen Programm zu schreiben dass die gesamte musik die in C:\Dokumente und Einstellungen\* ist in eine Liste (Checklistbox2)
schreiben soll und dann alle man auf "check" setzt abspielt nur leider spielt er immer nur den letzten track ab....

so holt es die Musik:

Delphi-Quellcode:
begin
 if DirectoryExists('C:\Dokumente und Einstellungen\') then
   FindFiles ('C:\Dokumente und Einstellungen\', '*.mp3', True, CheckListBox2.Items)
   else
 CheckListBox2.Items.Text:='Keine .mp3 Dateien in C:\Dokumente und Einstellungen';
end;
so spielt der ab:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 Var i:integer;
begin
for i:=0 to CheckListBox2.Items.Count do
begin

  if (CheckListBox2.Checked[i] = true) then          {Fehler liegt in dieser Schleife....weiss nich wie man die Schleife "Pausiert"}
  begin
    a:=CheckListBox2.Items.Strings[i];               {a ist ein string der für den Pfad der Datei steht}
    MediaPLayer1.FileName:=a;
    MediaPlayer1.Open;
    MediaPlayer1.Play;
  end

end;

end;
Hoffe könnt mir helfen!

Micha88 5. Dez 2009 20:25

Re: Musik Liste geht nich
 
ALs was ist "a" deklariert?

Ansonsten würde ich es so machen:

Delphi-Quellcode:
// UNGETESTET, einfach aus dem Gedächtnis aufgeschrieben
{ Vorgang:
1.StringListe erstellen
2. CheckListBox durch Schleife jagen, "checked"-einträge in StringList aufnehmen
3. am ende StringListe als m3u speichern und executen
}
var
 sl: TStringList;
 i: Integer;
begin
 sl := TStringList.Create;
 try
 for i := 0 to CheckListBox1.Items.Count - 1 do
  begin
   if (CheckListBox2.Checked[i] = true)
    begin
     sl.Add(CheckListBox2.Items[i]);
    end;
 end;
 finally
  sl.SaveToFile('C:\Liste.m3u');
  ShellExecute(Application.Handle 'open', PChar('C:\Liste.m3u'), Nil, Nil, SW_NORMAL);
  sl.Free;
 end;
end;
Ich der ShellExecute-Anweisung gibt es irgentwo eine UNSCHÖNHEIT.
Habe mal was darüber gelesen, weis es aber nicht mehr.

jonsen2.0.0.9 5. Dez 2009 20:28

Re: Musik Liste geht nich
 
a ist ein string

in ihm wird der pfad einer datei gespeichert um diese aufzurufen.

jonsen2.0.0.9 5. Dez 2009 20:42

Re: Musik Liste geht nich
 
funzt nich:

[Fehler] Unit1.pas(84): Undefinierter Bezeichner: 'sl'
[Fehler] Unit1.pas(86): Undefinierter Bezeichner: 'i'
[Fehler] Unit1.pas(90): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(90): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(92): EXCEPT oder FINALLY erwartet
[Fehler] Unit1.pas(93): 'END' erwartet, aber 'FINALLY' gefunden
[Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CheckLst;

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckListBox1: TCheckListBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings);
Var
  FindRec: tSearchRec;
Begin
  // Wenn die Stringliste nil ist oder aPath oder aFind nicht angegeben ist
  // dann raus
  If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then
    Exit;

  // Wenn am Ende der Pfadangabe noch kein \ steht, dieses hinzufügen
  // (Oder die Funktion IncludeTrailingPathDelimiter aus der Unit SysUtils.pas verwenden)
  If aPath[Length (aPath)] <> '\' Then
    aPath := aPath + '\';

  // Im aktuellen Verzeichnis nach der Datei suchen
  If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
        // ...Ergebnis in die Stringlist einfügen
        aResult.Add (aPath + FindRec.Name);
    Until FindNext (FindRec) <> 0;

  FindClose (FindRec);

  // Wenn nicht in Unterverzeichnissen gesucht werden soll dann raus
  If Not aWithSub Then
    Exit;

  // In Unterverzeichnissen weiter suchen
  If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
        // Feststellen, ob es sich um ein Verzeichnis handelt
        If Boolean (FindRec.Attr and faDirectory) Then
          // Funktion erneut aufrufen, um Verzeichnis zu durchsuchen (Rekursion)
          FindFiles (aPath + FindRec.Name, aFindMask, aWithSub, aResult);
    Until FindNext (FindRec) <> 0;

   FindClose (FindRec);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
if DirectoryExists('C:\Dokumente und Einstellungen\') then
   FindFiles ('C:\Dokumente und Einstellungen\', '*.mp3', True, CheckListBox1.Items)
   else
CheckListBox1.Items.Text:='Keine .mp3 Dateien in C:\Dokumente und Einstellungen';
end;



procedure TForm1.Button2Click(Sender: TObject);
sl: TStringList;
i: Integer;
begin
sl := TStringList.Create;
try
for i := 0 to CheckListBox1.Items.Count - 1 do
  begin
   if (CheckListBox1.Checked[i] = true) then

     sl.Add(CheckListBox2.Items[i]);

end;
finally
  sl.SaveToFile('C:\Liste.m3u');
  ShellExecute(Application. 'open', PChar('C:\Liste.m3u'), Nil, Nil, SW_NORMAL);
  sl.Free;
end;

end.

Micha88 5. Dez 2009 20:48

Re: Musik Liste geht nich
 
Als erstes oben in die USES ShellAPI.

Sieht dann so aus:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CheckLst, ShellAPI;
Du musst dir den COde auch erstmal ansehen, bevor du blind herkopierst ;)

Dann:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var // VAR hat gefehlt!
sl: TStringList;
i: Integer;
begin
sl := TStringList.Create;
try
for i := 0 to CheckListBox1.Items.Count - 1 do
  begin
   if (CheckListBox1.Checked[i] = true) then
    sl.Add(CheckListBox1.Items[i]);
  end;
finally
  sl.SaveToFile('C:\Liste.m3u');
  ShellExecute(Application. 'open', PChar('C:\Liste.m3u'), Nil, Nil, SW_NORMAL);
  sl.Free;
end;

jonsen2.0.0.9 5. Dez 2009 20:54

Re: Musik Liste geht nich
 
sry dat ich nich ganz so aufmerksam duchgelesen hab :oops:

aufjedenfall schon ma DANKE

hat allerdings immer noch probs mit einer Zeile mit der ich mich überhaupt nicht auskenne:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
sl: TStringList;
i: Integer;
begin
sl := TStringList.Create;
try
for i := 0 to CheckListBox1.Items.Count - 1 do
  begin
   if (CheckListBox1.Checked[i] = true) then
    sl.Add(CheckListBox1.Items[i]);
  end;
finally
  sl.SaveToFile('C:\Liste.m3u');
  ShellExecute(Application. 'open', PChar('C:\Liste.m3u'), Nil, Nil, SW_NORMAL); {<-------------Probs}
  sl.Free;
end;

end;

end.
[Fehler] Unit1.pas(94): Bezeichner erwartet, aber String-Konstante gefunden
[Fehler] Unit1.pas(94): Inkompatible Typen: 'Integer' und 'PAnsiChar'

SRY aber damit kenn ich mich wirklich nich aus...arbeite mit delphi seit mittwoch -.-

Micha88 5. Dez 2009 21:02

Re: Musik Liste geht nich
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hier eine fertige Lösung schnell geschrieben, sie funktioniert und öffnet den Standard Media-Player mit einer in m3u-format übergebenen AUTOMATISCH gespeichertn Liste.
Die Liste wird in dem ausgewähltem Verzeichnis abgelegt.
Nach Programmende wird die gelöscht.
(ANHANG)

jonsen2.0.0.9 5. Dez 2009 21:03

Re: Musik Liste geht nich
 
danke...ma schaun was ich falsch hatte...


ahh...handel fehlte


aber 2 frage hab ich noch...

WAS MACHT SL.FREE

Delphi-Quellcode:
finally
  sl.SaveToFile(sDir + '\Liste.m3u');
  ShellExecute(Application.Handle, 'open',
   PChar(sDir + '\Liste.m3u'), Nil, Nil, SW_NORMAL);
  sl.Free;
 end;
und sDir ist immer eine Var oder muss ich die erst setzen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 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