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
Merhaba,
Hedeflediğiniz projedeki tüm sorunları sıralamışsınız ve proje kaynak kodlarını paylaşmışsınız.
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.
İ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
(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.
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.
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
(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.
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.
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
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;
(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
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;
(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
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.