Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Görüşme Kayıt
#1
Fesih hocanın yardımlarıyla yaptığım projede bir iki sorunum var aşağıda sıraladım proje kodlarım linkde yardımcı olursanız sevinirim
projeyi uygulayıp yüklerseniz daha uygun olur
1 kayıt edilen ses çok kısık geliyor
2 programın içinde kaydedilen dosyayı sildikden sonra silinecek dosya bulunamadı diyor
3 önceden dosya içinde bulunan mp3u silmiyor
4 bazen java.io.IOexcetion : SetDataSource failed hatası veriyor
Cevapla
#2
Merhaba,
Hedeflediğiniz projedeki tüm sorunları sıralamışsınız ve proje kaynak kodlarını paylaşmışsınız.  Huh
Siz de takdir edersiniz ki; tüm projenin gözden geçirilmesi ve sorunların giderilmesi ciddi bir zaman alacaktır. Bu tip bir desteğin de size bir faydası olmayacağına kanaatim sonsuzdur.  
DelphiCan olarak; üyelerimize doğrudan kod paylaşımı yaparak yardımcı olmaktan ziyade, aşama aşama karşılaştığı sorunları çözmeye yönelik öneri ve paylaşımlarda bulunmayı tercih ediyoruz.
Bu kapsamda; 
  • Hata veya sorunlarınızı detaylı olarak bildirin. 
  • Hata mesajı varsa, hata mesajını veya ekran görüntüsünü paylaşın. 
  • Sorun veya hataları tek tek ve öncelik sıranıza göre sorun. Emin olun bu yöntemle, sorunu çözmeye yönelik daha hızlı ve daha çok yanıt alırsınız. 
Başlamak bitirmenin yarısıdır. Smile İlk sorununuzdan başlayalım.
Sesin kısık gelmesi kod yapısından kaynaklanmıyordur. 
Kaydedilen ses kalitesi = Mikrofon kalitesi+ Ortamdaki ses düzeyi  + Cihaz özellikleri
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
Cevabiniz icin tesekkurler hocam o zaman geriye kalan diger sorunlar , Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Bu konuda yardımcı oldugunuz koddan sonra oldu
Cevapla
#4
(11-04-2017, Saat: 16:24)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol...
2 programın içinde kaydedilen dosyayı sildikden sonra silinecek dosya bulunamadı diyor
3 önceden dosya içinde bulunan mp3u silmiyor
...
sorun ne acaba
...

Merhaba,
2 ve 3. sorunun nedeni;
DosyaAdi Global Değişkenine herhangi bir Path atamamışsınız. Bu durumda bilmediği dosya adını silememesi doğaldır. Smile
Global Değişken kullanmaya gerek kalmadan, yalnızca Lokal bir değişken ile işinizi halledebilirsiniz. Böylece sistem bellek kullanımını azaltmış olursunuz.

Metodun önceki hali;
procedure TTabbedwithNavigationForm.SpeedButton1Click(Sender: TObject);
var
 i: Integer;
 StrDosya: String;

begin
 for i := Pred(ListView1.Items.Count) downto 0 do
 begin
   if ListView1.Items[i].Checked then
     ListView1.Items.Delete(i);

   StrDosya := TPath.Combine(TPath.GetSharedPicturesPath, DosyaAdi);
   if TFile.Exists(StrDosya) then
     TFile.Delete(StrDosya)
   else
     ShowMessage('Silinecek dosya bulunamadı');
 end;
end;

Metodun yeni hali;
procedure TTabbedwithNavigationForm.SpeedButton1Click(Sender: TObject);
var
 i: Integer;
 StrDosya: String;

begin
 for i := Pred(ListView1.Items.Count) downto 0 do
 begin
   StrDosya := GetArsHedef(ListView1.Items[i].Text);
   if ListView1.Items[i].Checked then
     ListView1.Items.Delete(i);

   // StrDosya := TPath.Combine(TPath.GetSharedPicturesPath, DosyaAdi);
   if TFile.Exists(StrDosya) then
     TFile.Delete(StrDosya)
   else
     ShowMessage('Silinecek dosya bulunamadı');
 end;
end;

(11-04-2017, Saat: 16:24)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol...
4 bazen java.io.IOexcetion : SetDataSource failed hatası veriyor
...
sorun ne acaba
...

Mp3 dosyalarını listelediğiniz ListView1'in OnItemClick olayında seçili olan ses dosyasını yeniden çalmanızdan kaynaklanıyor. Silinen bir sesi çalmaması da gayet doğal. Smile

Metodun Önceki hali;
procedure TTabbedwithNavigationForm.ListView1ItemClick(const Sender: TObject;
 const AItem: TListViewItem);
begin
 txtbilgi.Text := 'Parça: ' + AItem.Text;
 MediaPlayer1.FileName := AItem.Detail;
 MediaPlayer1.Play;
 FloatAnimation1.StopValue := -txtbilgi.Width - Image1.Width;
 FloatAnimation1.Start;
end;

Düzeltilmiş hali;
procedure TTabbedwithNavigationForm.ListView1ItemClick(const Sender: TObject;
 const AItem: TListViewItem);
begin
 txtbilgi.Text := 'Parça: ' + AItem.Text;
//  MediaPlayer1.FileName := AItem.Detail;
//  MediaPlayer1.Play;
 FloatAnimation1.StopValue := -txtbilgi.Width - Image1.Width;
 FloatAnimation1.Start;
end;

Ana formunuzun Pas dosyası: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
(13-04-2017, Saat: 16:08)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(11-04-2017, Saat: 16:24)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol...
2 programın içinde kaydedilen dosyayı sildikden sonra silinecek dosya bulunamadı diyor
3 önceden dosya içinde bulunan mp3u silmiyor
...
sorun ne acaba
...

Merhaba,
2 ve 3. sorunun nedeni;
DosyaAdi Global Değişkenine herhangi bir Path atamamışsınız. Bu durumda bilmediği dosya adını silememesi doğaldır. Smile
Global Değişken kullanmaya gerek kalmadan, yalnızca Lokal bir değişken ile işinizi halledebilirsiniz. Böylece sistem bellek kullanımını azaltmış olursunuz.

Metodun önceki hali;
procedure TTabbedwithNavigationForm.SpeedButton1Click(Sender: TObject);
var
 i: Integer;
 StrDosya: String;

begin
 for i := Pred(ListView1.Items.Count) downto 0 do
 begin
   if ListView1.Items[i].Checked then
     ListView1.Items.Delete(i);

   StrDosya := TPath.Combine(TPath.GetSharedPicturesPath, DosyaAdi);
   if TFile.Exists(StrDosya) then
     TFile.Delete(StrDosya)
   else
     ShowMessage('Silinecek dosya bulunamadı');
 end;
end;

Metodun yeni hali;
procedure TTabbedwithNavigationForm.SpeedButton1Click(Sender: TObject);
var
 i: Integer;
 StrDosya: String;

begin
 for i := Pred(ListView1.Items.Count) downto 0 do
 begin
   StrDosya := GetArsHedef(ListView1.Items[i].Text);
   if ListView1.Items[i].Checked then
     ListView1.Items.Delete(i);

   // StrDosya := TPath.Combine(TPath.GetSharedPicturesPath, DosyaAdi);
   if TFile.Exists(StrDosya) then
     TFile.Delete(StrDosya)
   else
     ShowMessage('Silinecek dosya bulunamadı');
 end;
end;

(11-04-2017, Saat: 16:24)Paranoyaq Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol...
4 bazen java.io.IOexcetion : SetDataSource failed hatası veriyor
...
sorun ne acaba
...

Mp3 dosyalarını listelediğiniz ListView1'in OnItemClick olayında seçili olan ses dosyasını yeniden çalmanızdan kaynaklanıyor. Silinen bir sesi çalmaması da gayet doğal. Smile

Metodun Önceki hali;
procedure TTabbedwithNavigationForm.ListView1ItemClick(const Sender: TObject;
 const AItem: TListViewItem);
begin
 txtbilgi.Text := 'Parça: ' + AItem.Text;
 MediaPlayer1.FileName := AItem.Detail;
 MediaPlayer1.Play;
 FloatAnimation1.StopValue := -txtbilgi.Width - Image1.Width;
 FloatAnimation1.Start;
end;

Düzeltilmiş hali;
procedure TTabbedwithNavigationForm.ListView1ItemClick(const Sender: TObject;
 const AItem: TListViewItem);
begin
 txtbilgi.Text := 'Parça: ' + AItem.Text;
//  MediaPlayer1.FileName := AItem.Detail;
//  MediaPlayer1.Play;
 FloatAnimation1.StopValue := -txtbilgi.Width - Image1.Width;
 FloatAnimation1.Start;
end;

Ana formunuzun Pas dosyası: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Hocam Listview de play olayını kaldırınca Diğer tarafda kalan

procedure TTabbedwithNavigationForm.Image3Click(Sender: TObject);
begin
if (Mikrofon.State = TCaptureDeviceState.Stopped) then
begin
  MediaPlayer1.FileName := GetArsHedef();

  MediaPlayer1.Play;
end;
end;


Play butonu olayında en son kaydedilen kaydı çalışıyor ,
Listview de seçilen kaydı dinleme işlemeni nasıl yapabiliriz hocam
Cevapla
#6
Merhaba,
Buton/Image Click olayında yapacak iseniz;
procedure TTabbedwithNavigationForm.Image3Click(Sender: TObject);
var
 strDosyaAdiVeYolu: String;
begin
 if ListView1.ItemIndex >= 0 then
 begin
   DosyaAdi := ListView1.Items[ListView1.ItemIndex].Text;
   { seçili Item değeri, DosyaAdi Global değişkeninize atanıyor }
   strDosyaAdiVeYolu := GetArsHedef();
   if not TFile.Exists(strDosyaAdiVeYolu) then
   begin
     ShowMessage('Seçili dosya bulunamadı');
     Exit;
   end;
   if (Mikrofon.State = TCaptureDeviceState.Stopped) then
   begin
     MediaPlayer1.FileName := strDosyaAdiVeYolu;
     MediaPlayer1.Play;
     txtbilgi.Text := 'Parça: ' + AItem.Text;
   end
   else
     ShowMessage
       ('Ses dosyasını çalmadan önce, kayıt işlemini durdurmalısınız.');
 end
 else
   ShowMessage('Listeden bir ses dosyası seçin.');
end;


ListView'in OnItemClick olayında yapacak iseniz;
procedure TTabbedwithNavigationForm.ListView1ItemClick(const Sender: TObject;
  const AItem: TListViewItem);

var
  strDosyaAdiVeYolu: String;
begin
  if ListView1.ItemIndex >= 0 then
  begin
    DosyaAdi := ListView1.Items[ListView1.ItemIndex].Text;
    { seçili Item değeri, DosyaAdi Global değişkeninize atanıyor }
    strDosyaAdiVeYolu := GetArsHedef();
    if not TFile.Exists(strDosyaAdiVeYolu) then
    begin
      ShowMessage('Seçili dosya bulunamadı');
      Exit;
    end;
    MediaPlayer1.FileName := strDosyaAdiVeYolu;
    MediaPlayer1.Play;
    txtbilgi.Text := 'Parça: ' + AItem.Text;
    FloatAnimation1.StopValue := -txtbilgi.Width - Image1.Width;
    FloatAnimation1.Start;
  end
  else
    ShowMessage('Listeden bir ses dosyası seçin.');
end;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
(25-04-2017, Saat: 19:02)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Buton/Image Click olayında yapacak iseniz;
procedure TTabbedwithNavigationForm.Image3Click(Sender: TObject);
var
 strDosyaAdiVeYolu: String;
begin
 if ListView1.ItemIndex >= 0 then
 begin
   DosyaAdi := ListView1.Items[ListView1.ItemIndex].Text;
   { seçili Item değeri, DosyaAdi Global değişkeninize atanıyor }
   strDosyaAdiVeYolu := GetArsHedef();
   if not TFile.Exists(strDosyaAdiVeYolu) then
   begin
     ShowMessage('Seçili dosya bulunamadı');
     Exit;
   end;
   if (Mikrofon.State = TCaptureDeviceState.Stopped) then
   begin
     MediaPlayer1.FileName := strDosyaAdiVeYolu;
     MediaPlayer1.Play;
     txtbilgi.Text := 'Parça: ' + AItem.Text;
   end
   else
     ShowMessage
       ('Ses dosyasını çalmadan önce, kayıt işlemini durdurmalısınız.');
 end
 else
   ShowMessage('Listeden bir ses dosyası seçin.');
end;


ListView'in OnItemClick olayında yapacak iseniz;
procedure TTabbedwithNavigationForm.ListView1ItemClick(const Sender: TObject;
  const AItem: TListViewItem);

var
  strDosyaAdiVeYolu: String;
begin
  if ListView1.ItemIndex >= 0 then
  begin
    DosyaAdi := ListView1.Items[ListView1.ItemIndex].Text;
    { seçili Item değeri, DosyaAdi Global değişkeninize atanıyor }
    strDosyaAdiVeYolu := GetArsHedef();
    if not TFile.Exists(strDosyaAdiVeYolu) then
    begin
      ShowMessage('Seçili dosya bulunamadı');
      Exit;
    end;
    MediaPlayer1.FileName := strDosyaAdiVeYolu;
    MediaPlayer1.Play;
    txtbilgi.Text := 'Parça: ' + AItem.Text;
    FloatAnimation1.StopValue := -txtbilgi.Width - Image1.Width;
    FloatAnimation1.Start;
  end
  else
    ShowMessage('Listeden bir ses dosyası seçin.');
end;

undeclerad identifier AItem hatası mevcut imageclick olayında
Cevapla
#8
Gözümden kaçmış. AItem, ListView in OnItemClick olayına ait parametrik bir değişkendir.
İlgili satırı aşağıdaki şekilde yeniden düzenleyin.
txtbilgi.Text := 'Parça: ' + ListView1.Items[ListView1.ItemIndex].Text;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#9
(26-04-2017, Saat: 21:54)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlGözümden kaçmış. AItem, ListView in OnItemClick olayına ait parametrik bir değişkendir.
İlgili satırı aşağıdaki şekilde yeniden düzenleyin.
txtbilgi.Text := 'Parça: ' + ListView1.Items[ListView1.ItemIndex].Text;

Seçili dosya bulunamadı diyor hocam
Cevapla
#10
strDosyaAdiVeYolu := GetArsHedef();
satırından hemen sonra strDosyaAdiVeYolu değişkenini bir Memo'ya aktararak veya ShowMessage ile görerek, ilgili dosya yolunun doğru oluşturulup, oluşturulmadığını kontrol edin.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  TListView kayıt yükleme hk. barutali 8 485 11-08-2017, Saat: 09:45
Son Yorum: nguzeller



Konuyu Okuyanlar: 1 Ziyaretçi