24-11-2022, Saat: 01:52
Dostlar selamlar saygılar.... Öğretmenim. Delphi7 ile yıllar önce yazdığım ve sonrasında bir iki güncelleme yaptığım okul zil programını ve donanımını Teknofest'e proje olarak katılmak istiyorum. Sorunsuz olmasına çabalıyorum. Tenefüs aralarında isteğe bağlı şarkı çaldırma kısmı eklmiştim. Activex bileşen kullanmadığım zamanda sorunsuz çalışan precedurüm activex bileşeninde işe yaramıyor. Sebebini de bir türlü çözemedim. Listboxta yüklü olan şarkı listesini sıra ile ya da karışık olarak tenefüs boyunca çalacak. Yalnız ilk şarkıyı çalıp diğerine geçince ilgili şarkıya konumlanıyor(listboxta ilgili satır renkleniyor) ancak play koduna yanıt vermiyor. Eski mediaplayer nesnesinde aynı procedurum gayet sorunsuz çalışıyordu. Ancak onda da player nesnesinin stop durumunu alamadığım için activex nesnesine geçtim. (Stop durumunda portu kontrol ederek amfiyi açıp kapatıyorum, telefonumdan internete bağlı olan cihaz üzerinden programa komut göndererek de istediğim zili çaldırabiliyorum bu yüzden önemli)
tenefüs adında bir procedur oluşturdum.
playerin playstatechange olayında da stop durumunu okuyarak
if (NewState = wmppsStopped ) then begin
TENEFUS;
end;
proceru tekrar çalıştırıyorum. İlginçtir ki play yapmıyor. ilk şarkı çalıyor ikinci ve sonrası şarkılara ilerlemiyor. newstate ait tüm seçenekleri denedim yine olmadı. Sizce ikinci defa ve sonrasında diğer şarkılar neden çalışmaz dostlar? Yorumlarınızı bekler kolaylıklar dilerim.
tenefüs adında bir procedur oluşturdum.
procedure Tform1.TENEFUS; VAR I:INTEGER; begin IF DirectoryExists(Edit1.Text) THEN BEGIN IF bsSkinFileListBox1.Items.Count>0 THEN BEGIN IF bsSkinCheckRadioBox4.Checked THEN //SIRALI ÇAL BEGIN IF StrToInt(SON_MELODI.Caption)>=bsSkinFileListBox1.Items.Count-1 THEN SON_MELODI.Caption:='0' ELSE SON_MELODI.Caption:=INTTOSTR(STRTOINT(SON_MELODI.Caption)+1); Player1.controls.stop; bsSkinFileListBox1.ItemIndex:=STRTOINT(SON_MELODI.Caption); Player1.URL:=bsSkinDirectoryListBox1.Directory+'\'+bsSkinFileListBox1.Items[STRTOINT(SON_MELODI.Caption)]; Player1.controls.play; END; //SIRALI ÇAL SON IF bsSkinCheckRadioBox5.Checked THEN //KARIŞIK ÇAL BEGIN IF bsSkinFileListBox1.Items.Count>1 THEN BEGIN Randomize; REPEAT I:=RANDOM(bsSkinFileListBox1.Items.Count); UNTIL I<>STRTOINT(SON_MELODI.Caption); END ELSE I:=0; Player1.controls.stop; SON_MELODI.Caption:=INTTOSTR(I); bsSkinFileListBox1.ItemIndex:=STRTOINT(SON_MELODI.Caption); Player1.URL:=bsSkinDirectoryListBox1.Directory+'\'+bsSkinFileListBox1.Items[I]; Player1.controls.play; END;//KARIŞIK ÇAL SON END; END; end;
playerin playstatechange olayında da stop durumunu okuyarak
if (NewState = wmppsStopped ) then begin
TENEFUS;
end;
proceru tekrar çalıştırıyorum. İlginçtir ki play yapmıyor. ilk şarkı çalıyor ikinci ve sonrası şarkılara ilerlemiyor. newstate ait tüm seçenekleri denedim yine olmadı. Sizce ikinci defa ve sonrasında diğer şarkılar neden çalışmaz dostlar? Yorumlarınızı bekler kolaylıklar dilerim.

