Bass Library bir sonraki şarkı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Bass Library bir sonraki şarkı

Mesaj gönderen Lord_Ares »

Merhaba arkadaşlar,
Müzik kutusu projem için yaptığım armalar ve tavsiyeler ile bass library kullandım. Projem tam bitti derken öyle bir hata çıktı ki 3 gündür işin içinden çıkamadım. Daha önce kullanmış veya konu hakkında bilgisi olanlar yardımcı olursa sevinirim aksi takdirde projeyi silip sıfırdan başka bir bileşenle yazmak zorunda kalacağım. Bass library örneklerini indirip baktım onlarda aynı sorun var sanırım farketmediler yada bilmediğim bir çözümü var.

Sorun:
Çalma listesine bir şarkı ekleyin ve play tuşuna basın. Şarkı çalmaya başladığında, bir şarkı daha ekleyin. Normalde birinci şarkı bitiminde ikinci şarkıdan devam etmesi gerekiyor.Fakat etmiyor. Sorunu yaratan kısım sanırım aşağıdaki BassEndPlay prosedürü. İlk şarkı çalmaya başladığında çalan parçanın satırı seçili durumda oluyor fakat siz şarkı eklemek için başka ekrana geçtiğinizde bu seçimlilik durumu iptal oluyor iptal olduğu içinde listboxın indexi şaşıyor. Dolayısı düzgün çalışabilmesi için, hangi şarkı çalıyorsa listboxtaki o satır seçili durumda kalması gerekiyor . Ne yaptıysam bu sorunu düzeltemedim. Sizlerden ricam bunu nasıl düzeldeceğim konusunda yardımcı olursanız sevinirim. İmkanınız olur bakabilirseniz aşağıda ekli dosyada paylaşılan örneğin orjinal halini gönderiyorum. m3uTest3_XE6 isminde exe si var çalıştırıp görebilirsiniz(Kendi projemin boyutu büyük olduğu için orjinali gönderdim)
Saygılarımla teşekkürler

Örnek proje linki : http://s3.dosya.tc/server2/1mwiyg/BassS ... 1.rar.html

Kod: Tümünü seç

procedure TForm1.BassEndPlay(BassObj: TObject);
var z: integer;
begin
 // êîíåö âîñïğîèçâåäåíèÿ
 z:=ListBox1.ItemIndex;
 inc(z);
 if m3u.Files.Count=0 then exit;
 if z>m3u.Files.Count-1 then z:=0;
 ListBox1.ItemIndex:=z;
 Button1.Click;
end;
Button1.click şu şekilde

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  // play
  if (ListBox1.ItemIndex>=0) and
    (m3u.Files.Count>0) and
    (ListBox1.ItemIndex<m3u.Files.Count) then
    b.Play(m3u.Files[ListBox1.ItemIndex]);
end;

Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Bass Library bir sonraki şarkı

Mesaj gönderen xozcanx »

Hocam aklıma ilk gelen yönten denediniz mi bilmiyorum fakat şöyle birşey yapsanız ListBox'un OnExit olayında ListBoxta seçili olan(yürütülen) parçanın index numarasını alsak (x:=ListBox1.ItemIndex;), yeni parça ekledikten sonra tekrar x noktasına konumlandırsak (ListBox1.ItemIndex:=x);
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Bass Library bir sonraki şarkı

Mesaj gönderen Lord_Ares »

Fikir için teşekkürler. O zaman şöyle bir sorunumuz olur.
Çalma listende 3 şarkı olduğunu ve birinci şarkı çalıyorken, yeni şarkı seçmeye çalıştığımızı düşünelim. Şarkı seçmeye çalışırken birinci şarkı bitti ikinci şarkıya geçti. Bizim elimz de ilk şarkının indexi kalmış olur. Şarkı seçtikten sonra elimizdeki indexe bakarak listboxa odaklanırsak ikinci şarkı çalarken biz birinciyi seçmiş oluruz. Ya biz şarkı seçerken 3 şarkı geçtiyse... Eyvah yandık :))
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Bass Library bir sonraki şarkı

Mesaj gönderen freeman35 »

item index değilde, her aktif çalınan şarkının bilgilerine sahip olabiliyorsundur, bunun sabit değişmeyen ve unique olan bir bilgisi mutlaka vardır, mesala fullpath + filename, playlist içinde her gerektiğinde bunu baştan sona arat. Bu liste içinde sıralamayı değiştirdiğinde dahi doğru olarak çalışacaktır.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Bass Library bir sonraki şarkı

Mesaj gönderen Lord_Ares »

Bilgi için teşekkürler freeman son çare olarak bende o şekil düşünmüştüm fakat listedeki şarkı sayısı çok olursa bu sistemi epey yavaşlatacaktır diye düşündüm. Başka bir yol bulamazsam, son çare olarak sizin dediğiniz gibi deneyeceğim. Aşağıda çalışan yeni bir örnek var, bu örnekte şöyle bir şey denedim. İkinci bir listbox ekleyip programı çalıştırdım. Şarkı çalarken ikinci listboxta bir satır seçmeme rağmen Listbax1 deki satır hala seçili durumda kalabiliyor. Bunu nasıl yaptığını anlayamadım. Benim projeme bunu uygulayabilirsem sorun kalmayacak. Ekteki projeyi kullan derseniz bu proje bass_simple kütüphanesinle yapılmış, benim ki ise bass_simple_Fx ile dolayısı ile bu projediki kodlar bende çalışmıyor sıfırdan yazmam gerekir :D

http://s3.dosya.tc/server2/7ix5qe/CheesyMp3SC.rar.html
Cevapla