mp3 player

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

mp3 player

Mesaj gönderen guduknecmi »

selam mp3 player programı üzerinde çalışıyorum.
mp3 listesini shelltreeview ile klasör seçerek filelistbox içine alıp tıkladığımı çaldırabiliyorum.Ama listedekilerin tamamını çaldırmak istiyorum.sırayla veya karışık.ne yapmam lazım.Bir de programı açtığımda önceki listeyi hatırlaması için ne yapmalıyım.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

filelistbox ta elemanlara yani dosyalara Items ozelligi ile erisebilirsin sanırım
rastgele sıralama icin de eleman sayısı kadar bir for dongusu
icinde ise max degeri items.count-1 kadar olan random fonk. kullanılır.
ama her dongude benzersiz bir random sayı icin algoritmayı biraz iyilestirmek lazım
aslında guzel bir algoritma sorusu,
bir arkadas 1 ile 50 arasında benzersiz random sayı uretme ile ilgili bir soru sormustu
ona tazdııgım cevaptan faydalanabilirsin
tabi ilk once arayıp bulman lazım
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

ikinci kez açıldığında önceki listeyi hatırlamsı için ini dosyası kullanabilirsin.. Mesela her açılışta bir öncekini yüklersin ve kapanışta iniyi sıfırlarsın sonra tekrar ini ye kayıt edersin..

ne kadar kullanışlı bir yöntem bilemiyorum ama fikir verebilir belki.

Bu arada normal bir şekilde kapanmazsa ne olacak diyebilirsin ama zaten winamp bile normal kapanmadıysa listeyi kayıt etmiyor.
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

cevaplar için teşekkürler.
sayenizde işlem tamam.
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

selam
filelistbox'u form kapanırken kaydediyorum,açılırken de oradan okuyorum.Program açıldığında önceki şarkı listesi görünüyor..

Kod: Tümünü seç

feridun duzagac - Askin E hali.mp3
Jenifer Lopez - Lets Get Loud.mp3
Jennifer Lopez & Mark Anthony- No Me Ames.mp3
Yalnız play dediğimde hata ile karşılaşıyorum.bence bunun nedeni şarkı listesinin yolunun belirtilmemiş olması.ben de shelltreeview i de savetofile ile kaydedip loadfromfile ile okumak istedim.kayıt yapıyor ama okumada hata veriyor.biraz daha açacak olursam:
shelltreeview1.savetofile('c:\yol.txt');//ile yaptığım kayıt:

Kod: Tümünü seç

Masaüstü
	Belgelerim
	Bilgisayarım
		3½ Disket (A:)
		Yerel Disk (C:)
		Yerel Disk (D:)
			mp3
				elvis presley
				favori
				klasik
		CD Sürücüsü (E:)
		Denetim Masası
		Paylaşılan Belgeler
		aysel - Belgeler
	Ağ Bağlantılarım
	Geri Dönüşüm Kutusu
bu kaydı geri yükleyemiyor.
shelltreeview'i

Kod: Tümünü seç

D:\mp3\favori\
veya filelistbox'u

Kod: Tümünü seç

D:\mp3\favori\Jenifer Lopez - Lets Get Loud.mp3
D:\mp3\favori\Jennifer Lopez & Mark Anthony- No Me Ames.mp3
D:\mp3\favori\feridun duzagac - Askin E hali.mp3
şeklinde kayıt yapabilirsem, listede görünen şarkıların problemsiz çalınabileceğini düşünüyorum.Ancak ne shelltreeview'i ne de filelistbox'u yukarıdaki gibi kayıt edemedim
Belki de yanlış yoldayım.Sizce program açıldığında eski listeyi hatırlaması ve çalabilmesi için ne yapmam lazım.
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

az daha gayret işin sonuna gelmişsiniz çözümün aslında gözünüzün önünde durduğunu farkedeceksiniz...
Sonra da mutlu olacaksınız

Saygılar
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

selamlar
ah microchip ah.
mantık olarak filelistbox'u kayıt ederken shelltreeview'in pathini de kayıtın başına eklemesi lazım diye düşünüyorum(yol\+filelistbox) ama bilgi eksiğimden dolayı nasıl yaparım bilemiyorum.kafamda birsürü şey oluşturup denedim ama nafile.Ne olur anlat ne yapacağımı...
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

pathi ayrı tut dosya isimleri ayrı
ayrı ayrı iki dosya da kullanırsın yada tek bir dosyada kullanırsın...
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

halledemedim bir türlü

Mesaj gönderen guduknecmi »

yok olmuyor yapamıyorum.neredeyse bir haftadır bu problemi halledemedim.
mediaplayere yolu bildirip açıyorum:

Kod: Tümünü seç

procedure TForm1.ShellTreeView1Click(Sender: TObject);
begin
filelistbox1.Directory:=shelltreeview1.Path;
mediaplayer1.FileName:=filelistbox1.FileName;
mediaplayer1.Open;
end;   
listeyi kaydedip yüklüyorum:

Kod: Tümünü seç

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
filelistbox1.Items.SaveToFile('c:\liste.txt');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
filelistbox1.Items.LoadFromFile('c:\liste.txt');
e tabi bu şekilde yükleyince mediaplayer hata veriyor.çünkü dosya yolu
c:\program files\borland\delphi7\projects\mediaplayer\müzik.mp3 olarak görülüyor.
dosya yolunu filelistbox içinde gösteremedim ama listbox tam yolu gösterdi.

Kod: Tümünü seç

 
listbox1.Items.Add(filelistbox1.filename);//eklediğim listboxta seçili şarkının tam yolu görünüyor
listbox1.items.add(shelltreeview1.Path);//listboxta mp3 ün pathi görülüyor 
arkadaşlar biraz uzattım galiba kusura bakmayın.listenin tamamını geri yüklendiğinde çalınabilecek tipte nasıl kaydedebilirim.Yada
listbox taki path ile filelistbox taki, şarkı isimlerini nasıl birleştirebilirim.Yardımcı olacak arkadaşlara minnettar kalacağım.
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

sonunda buldum arkadaşlar,
artık programı açıp play tuşuna basınca eski listeyi hatırlıyor ve çalıyor.
kodlarım çok karıştı denemeler sırasında ama genel olarak
iki filelistbox var, birinde path diğerinde şarkı isimleri var
birleştiren kod ise:

Kod: Tümünü seç

mediaplayer2.FileName:=filelistbox2.items[filelistbox2.itemindex] +'\'+ filelistbox1.items[filelistbox1.itemindex];
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

Kazandığın zaferin sevinç nidaları taaaaaaaa buralardan duyuluyo zaten... Ben de çok sevindim senin adına...
Şimdi bu konuda kendine olan güvenin 1 kat daha artmıştır...

Kolay Gelsin
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

evet işime yarayacak kodu bulunca sevindim tabi, acemilik, kodlara yabancılık zor şey.şimdi bakınca kodda hiçbirşey yokmuş, basit bir şeymiş diyorum ama bulana kadar göbeğim çatladı resmen.Şu da var ki mp3 player yapma amacım sadece delphiyi öğrenmek.bir hedefim olursa daha iyi motive oluyorum.Delphi'yi ve bu siteyi seviyorum.
Fikir veren, destek olan arkadaşlara teşekkür ederim.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

bide bunu incele. senin esas dosyan bir değişkende duruyor.
listboxda senin verdiğin sırayla eklediğin objelerde ise bu değişkendeki sıra.
sen listboxdaki sıralamayı istediğin kadar değiştir... ama herzamna oblect nosu bu değişkendeki sıra ile aynı olacak .
bu gibi birşey dene

Kod: Tümünü seç

 var MyList: TStringList;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 Mylist := TStringList.Create;
 Mylist.LoadFromFile('c:\listem.txt');
 ListBox1.Items.Clear;
 for i:= 0 to Mylist.Count-1 do
   Listbox1.Items.AddObject('Deneme'+inttostr(i+9),TObject(i));

 Listbox1.Sorted:=TRUE;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
showmessage(Listbox1.Items[Listbox1.itemindex]);
showmessage(inttostr(integer(Listbox1.items.Objects[Listbox1.itemindex])));
showmessage(Mylist[integer(Listbox1.items.Objects[Listbox1.itemindex])]);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Mylist.Free;
end;
Cevapla