AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit filename (String)

Ein Thema von Nils_13 · begonnen am 15. Mär 2006 · letzter Beitrag vom 15. Mär 2006
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Problem mit filename (String)

  Alt 15. Mär 2006, 16:01
Hi,

wenn ich mehrere Lieder zu meiner Playlist hinzufüge, wird immer nur das letzte abgespielt, egal welches ich auswähle. Wie kann ich das Problem beheben.

Delphi-Quellcode:
  TID3Tag = record
    ID: string[3];
    Titel: string[30];
    Artist: string[30];
    Album: string[30];
    Year: string[4];
    Comment: string[30];
    Genre: Byte;
  end;

  TMusicObj = class(TObject)
  private
    FFilename: String;
    FID3 : TID3Tag;
  public
    property FileName: String read FFileName write FFileName;
    property ID3 : TID3Tag read FID3 write FID3;
  end;

var
  ...
  filename: String;

procedure TfrmMain.Button2Click(Sender: TObject); // Abspiel Button
begin
  if playlist.ItemIndex = -1 then
    exit;
  BASS_MusicFree(chan);
  BASS_StreamFree(chan);
  frmSpectrum.Timer1.Enabled := True;
  filename := TMusicObj(ObjList[playlist.ItemIndex]).FileName;
  PlayFileF(filename);
end;

procedure TfrmMain.Button3Click(Sender: TObject); // Hinzufügen Button
var i: Integer;
begin
  BASS_MusicFree(chan);
  BASS_StreamFree(chan);
  if o.Execute then
  begin
    MusicObj.FileName := o.FileName;
    MusicObj.ID3 := ReadID3Tag(o.FileName);
    ObjList.Add(MusicObj);
    playlist.Items.Add(ExtractFileName(MusicObj.FileName));
  end;
end;

function TfrmMain.PlayFileF (filename: string): boolean;
begin
result := false;
if checkPlayAll.Checked = False then
playlist.Items.Strings[playlist.ItemIndex + 1];

chan := BASS_StreamCreateFile(FALSE,pchar(filename),0,0,0);
if chan = 0 then
begin
chan := BASS_MusicLoad(False, pchar(filename), 0, 0, BASS_MUSIC_RAMPS or BASS_MUSIC_POSRESET or BASS_MUSIC_PRESCAN, 0);
if (chan = 0) then
begin
ErrorPop('Kann das Lied nicht abspielen !');
Exit;
end;
end;
end;
  Mit Zitat antworten Zitat
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:11
So wie ich das sehe benutzt du immer das gleiche MusicObj.

Deine Liste für objekte kannste dir eigentlich auch sparen wenn du die objekte gleich mit in die Listbox speicherst.
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:14
Nur wie willst du das machen ? Dann habe ich da dann E:\blabla.mp3 stehen, es soll da dann aber nur blabla.mp3 stehen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:20
_Sebastian_ meint wohl, das du die MusicObj -Objekte mit der data-Property direkt verlinken solltest.
Markus Kinzler
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#5

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:21
extractfilename! schaue mal in die hilfe!
gruß und danke

Markus
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#6

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:26
Nochmal von vorne: Das Problem ist ganz einfach: Der filename ist immer das letzte Item, dass ich per Hinzufüg-Button-Click zur ListBox hinzufüge.

@marlem: Hättest du dir den Code oben angesehen, hättest du das nicht gesagt.
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#7

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:28
Hallo,

Delphi-Quellcode:
  TID3Tag = record
    ID: string[3];
    Titel: string[30];
    Artist: string[30];
    Album: string[30];
    Year: string[4];
    Comment: string[30];
    Genre: Byte;
  end;

  TMusicObj = class(TObject)
  private
    FFilename: String;
    FID3 : TID3Tag;
  public
    property FileName: String read FFileName write FFileName;
    property ID3 : TID3Tag read FID3 write FID3;
  end;

var
  ...
  filename: String;

procedure TfrmMain.Button2Click(Sender: TObject); // Abspiel Button
begin
  if playlist.ItemIndex = -1 then
    exit;
  BASS_MusicFree(chan);
  BASS_StreamFree(chan);
  frmSpectrum.Timer1.Enabled := True;
  filename := TMusicObj(ObjList[playlist.ItemIndex]).FileName; // Wo / wie wird ItemIndex gesetzt?
  PlayFileF(filename);
end;

procedure TfrmMain.Button3Click(Sender: TObject); // Hinzufügen Button
var i: Integer;
begin
  BASS_MusicFree(chan);
  BASS_StreamFree(chan);
  if o.Execute then
  begin
    MusicObj.FileName := o.FileName;
    MusicObj.ID3 := ReadID3Tag(o.FileName);
    ObjList.Add(MusicObj);
    playlist.Items.Add(ExtractFileName(MusicObj.FileName));
  end;
end;

function TfrmMain.PlayFileF (filename: string): boolean;
begin
result := false;
if checkPlayAll.Checked = False then
playlist.Items.Strings[playlist.ItemIndex + 1]; // Was soll diese Zeile bringen? Soll es vielleicht heißen "Playlist.Itemndex := PlayList.ItemIndex + 1"?

chan := BASS_StreamCreateFile(FALSE,pchar(filename),0,0,0);
if chan = 0 then
begin
chan := BASS_MusicLoad(False, pchar(filename), 0, 0, BASS_MUSIC_RAMPS or BASS_MUSIC_POSRESET or BASS_MUSIC_PRESCAN, 0);
if (chan = 0) then
begin
ErrorPop('Kann das Lied nicht abspielen !');
Exit;
end;
end;
end;
Wenn ItemIndex nicht irgendwo durch anklicken oder anders gesetzt wird (ich weiß nicht, was PlayLst ist, TStringList?), spielt er immer nur das gleiche. Und was ist mit der komischen Zeile? Was möchtest du da machen?

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:30
mittels TStrings.Addobject.
Und du musst halt bei jedem neuen Eintrag ein neues Musikobj erstellen
zb:
Delphi-Quellcode:
 musicObj := TmusicObj.create;
 // objekt bearbeiten
 Listbox.items.addobject(Extractfilename(filename),musicObj);
dein objekt bekommste dann mittels
 musicobj := TMusikObj(listbox.items.objects[listbox.itemindex]); zurück

und nicht vergessen die Objekte wieder freizugeben wenn du den eintrag aus der liste löschst.
 TMusicObj(Listbox.items.objects[listbox.itemindex]).free; // edit items.objects
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Problem mit filename (String)

  Alt 15. Mär 2006, 16:31
Was bezweckst du mit dieser Zeile in PlayFileF?
playlist.Items.Strings[playlist.ItemIndex + 1]; Eventuell solltest du das auch dem ItemIndex oder etwas anderem zuweisen.

//Ach, jetzt steht das sogar schonmal da Wurscht, ich quote weniger
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  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 15:25 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