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
Cevapla
#3
Cevabiniz icin tesekkurler hocam o zaman geriye kalan diger sorunlar , http://www.delphican.com/mobil-uygulamad...ylasi.html
Bu konuda yardımcı oldugunuz koddan sonra oldu
Cevapla
#4
(11-04-2017, Saat: 16:24)Paranoyaq Adlı Kullanıcıdan Alıntı: ...
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ı: ...
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ı: TabbedFormwithNavigation
Cevapla
#5
(13-04-2017, Saat: 16:08)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(11-04-2017, Saat: 16:24)Paranoyaq Adlı Kullanıcıdan Alıntı: ...
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ı: ...
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ı: TabbedFormwithNavigation

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;
Cevapla
#7
(25-04-2017, Saat: 19:02)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: 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;

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;
Cevapla
#9
(26-04-2017, Saat: 21:54)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: 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;

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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FMX excel kayıt guvenlik 8 1.421 04-05-2023, Saat: 11:27
Son Yorum: guvenlik
  Android de Rehberden kayıt silme barissagir 6 1.153 24-12-2022, Saat: 09:51
Son Yorum: barissagir
  Memtable filtreleme sonucundaki kayıt sayısı vedat33 2 481 18-11-2022, Saat: 10:03
Son Yorum: rmzgenius
  resim kayıt etme hk. sadoal351 2 572 06-10-2022, Saat: 09:23
Son Yorum: gonulali
  TListView kayıt yükleme hk. barutali 9 6.810 09-05-2022, Saat: 17:18
Son Yorum: theercan



Konuyu Okuyanlar: 1 Ziyaretçi