folder Tahribat.com Forumları
linefolder Delphi - Pascal
linefolder Delphi, Ses Çalmayı Tetikleme, Yardım



Delphi, Ses Çalmayı Tetikleme, Yardım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    programlamadan pek anlamıyorum ama Delphi ile bana yardımcı olacak bir uygulama geliştirmeye çalışıyorum. 

    TimerUpdateTimeTimer proseduru icinde soyle bir kod var:

      // Alt okuma
      if FSUIPC_Read($0570, 8, @alt, dwResult)  then begin
       // işlem kısmı
       if FSUIPC_Process(dwResult) then begin
          alt_1 := Round(alt * 3.28084 /4294967296);
          Label5.Caption := FloatToStr(alt_1);
         // Sabit Kısım
         end else begin
           LabelFSclock.Caption := 'Processing: ' + ResultText[dwResult];
        end;
      end else begin
         LabelFSclock.Caption := 'Reading: ' + ResultText[dwResult];
      end;

    Bu kısımda FSPUIC adlı yardımcı bir arabirim (?) üzerinden "alt" değişkenim sürekli güncelleniyor. Delphi de ses çalmayı da biliyorum. Yapmak istediğim şu ki; misal, "alt_1" değişkeni 1000 den büyük bir değer aldığında bir ses dosyası çalsın. 

    Yani:

    if alt_1>1000 then
          begin
          MediaPlayer1.Close;
          MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\sarki.mp3';
          MediaPlayer1.Open;
          MediaPlayer1.Play;
          end;

    örneğin, bu kodu nereye, nasıl yazmam gerekiyor ki, UYGULUMA ÇALIŞIRKEN sürekli tetikte olsun, koşullar sağlandığında ses dosyası çalınsın? TimeUpdateTimeTimer prosedürü içine yazdığımda çalmıyor, ya da daha şarkı başlamadan kendini yinelediği için duyamıyorum, ya da ben bi enayilik yapıyor da olabilirim..

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek
    // Alt okuma 
    
    if FSUIPC_Read($0570, 8, @alt, dwResult)  then begin 
    
     // işlem kısmı 
    
     if FSUIPC_Process(dwResult) then begin 
    
        alt_1 := Round(alt * 3.28084 /4294967296); 
    
        Label5.Caption := FloatToStr(alt_1); 
    
    if alt_1>1000 then 
    
          begin 
    
          MediaPlayer1.Close; 
    
          MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\sarki.mp3'; 
    
          MediaPlayer1.Open; 
    
          MediaPlayer1.Play; 
    
          end;
    
       // Sabit Kısım 
    
       end else begin 
    
         LabelFSclock.Caption := 'Processing: ' + ResultText[dwResult]; 
    
      end; 
    
    end else begin 
    
       LabelFSclock.Caption := 'Reading: ' + ResultText[dwResult]; 
    
    end;
    saybirs tarafından 07/Eki/14 01:42 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek
    saybirs bunu yazdı
    // Alt okuma 
    
    if FSUIPC_Read($0570, 8, @alt, dwResult)  then begin 
    
     // işlem kısmı 
    
     if FSUIPC_Process(dwResult) then begin 
    
        alt_1 := Round(alt * 3.28084 /4294967296); 
    
        Label5.Caption := FloatToStr(alt_1); 
    
    if alt_1>1000 then 
    
          begin 
    
          MediaPlayer1.Close; 
    
          MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\sarki.mp3'; 
    
          MediaPlayer1.Open; 
    
          MediaPlayer1.Play; 
    
          end;
    
       // Sabit Kısım 
    
       end else begin 
    
         LabelFSclock.Caption := 'Processing: ' + ResultText[dwResult]; 
    
      end; 
    
    end else begin 
    
       LabelFSclock.Caption := 'Reading: ' + ResultText[dwResult]; 
    
    end;

    hocam çok teşekkür ederim, yazdığınız şekilde denedim fakat ses çalmıyor. uygulama çalışıyor fakat ses yok. sanırım sürekli kendini yinelediği için duyamıyorum ;(

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    teamwiever ver bakalım hocam delphiden anlamam ama breakpointle çözmeye calısalım.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek
    saybirs bunu yazdı

    teamwiever ver bakalım hocam delphiden anlamam ama breakpointle çözmeye calısalım.

    teamwiever yok hocam, evde değilim, 1GB ram, celeron bi bilg. var burda. 

    aklıma birseyler geldi, simdi onları bir deneyeyim.

    çok tesekkür ederim.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    arkadaşlar sorun çözüldü.

    procedure TFormMain.ses();
    begin
    
      inc(deger);
    
          MediaPlayer1.Close;
          MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\sarki.mp3';
          MediaPlayer1.Open;
          MediaPlayer1.Play;
    
    end;

    gibi ayrı bir prosedür ile ses dosyası tetiklenmis oldu. lakin ses biraz gec caliyor, o da sanırım ses dosyasını baştan belleğe almamasından dolayı, ya da başka birşey, ama olsun. 

    tesekkurler.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek
    procedure TForm1.sesver(deger: integer);
    
    begin
    
        if ((deger>1000) and (MediaPlayer1.Position>1)) then
    
          begin
          beep;
          MediaPlayer1.Position:=0;
    
          MediaPlayer1.Close;
    
          MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\sarki.mp3';
    
          MediaPlayer1.Open;
    
          MediaPlayer1.Play;
    
          end;
    
    end;
    

     

    bu fonksiyonu kullan. bu şekilde bir kez çalışınca durmaz :D

    2. olarak sesi durdurmak için

    durdurma butonu yap, içine Mediaplayer1.stop; ve mediaplayer1.position:=0; yap

    //şarkına dikkat et belki müziğin önce sessiz olarak başlıyordur :D ona dikkat başına beep; yaz :D ben ekledim hade inşallah tamamlanır.


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek
    DuPi bunu yazdı
    procedure TForm1.sesver(deger: integer);
    
    begin
    
        if ((deger>1000) and (MediaPlayer1.Position>1)) then
    
          begin
          beep;
          MediaPlayer1.Position:=0;
    
          MediaPlayer1.Close;
    
          MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\sarki.mp3';
    
          MediaPlayer1.Open;
    
          MediaPlayer1.Play;
    
          end;
    
    end;
    

     

    bu fonksiyonu kullan. bu şekilde bir kez çalışınca durmaz :D

    2. olarak sesi durdurmak için

    durdurma butonu yap, içine Mediaplayer1.stop; ve mediaplayer1.position:=0; yap

    //şarkına dikkat et belki müziğin önce sessiz olarak başlıyordur :D ona dikkat başına beep; yaz :D ben ekledim hade inşallah tamamlanır.

    hocam ses kısmında bir sorun yok, sizinkine benzer bir procedure oluşturdum yalnız tetikleme TimeUpdateTimeTimer icinde yapılıyor ve inc() kullunarak dosyanın sadece bir kez çalmasını sağladım.

    çok teşekkür ederim. takıldığım bir yer olursa sorarım.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    gerçekten çok ilginç,

    inc(deger);

    deger:=deger+1;

    ile aynı bu nasıl engelliyebiliyor ki. iki kez çalmasını


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek
    DuPi bunu yazdı

    gerçekten çok ilginç,

    inc(deger);

    deger:=deger+1;

    ile aynı bu nasıl engelliyebiliyor ki. iki kez çalmasını

      // FL100 
      if FSUIPC_Read($0570, 8, @alt, dwResult)  then begin
       // işlem kısmı
       if FSUIPC_Process(dwResult) then begin
          alt_1 := Round(alt * 3.28084 /4294967296);
          Label5.Caption := FloatToStr(alt_1);
          if (deger=0) and (alt_1>10000) then
            ses();
         // Sabit Kısım
         end else begin
           LabelFSclock.Caption := 'Processing: ' + ResultText[dwResult];
        end;
      end else begin
         LabelFSclock.Caption := 'Reading: ' + ResultText[dwResult];
      end;

    if deger=0 ve alt_1>10000 ise ses() prosedürünü işlet diyorum. ses() işleyip şarkı çaldıktan sonra deger=1 oldugu icin (inc fonk. ile) bir daha ses() procedurunu cagirmiyor. 

Toplam Hit: 2142 Toplam Mesaj: 10