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

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[Çözüldü] UTF8ToString çözemedim..
#1
Media player uygulamsında şarkının yolunu ve adını Yolu: Ansistring değişkenine alıyor ve daha sonra listboxta 
Form1.Playlist_ListBox.Items.AddObject(Rec.Name , TMediaItem.Create(yolu)) diyerek tutuyorum. Gelen değeri okuduğumda

 Örnek "D:\Mp3\???.???.mp3"

şeklinde çıkıyor. Oysa bunu listboxa (Listbox1.items.add() şeklinde ) direk eklersem

Örnek "D:\Mp3\test.mp3" olarak doğru bir şekilde çıkııyor.



m3okQP.png
Sebebi nedir çözemedim.      Yolu:= UTF8ToString(Yolu) şeklinde de denedim olmadı.

Mediaitem.create kodum şu şekilde;

Kod:
TMediaItem = class
private
  fIsAudio : Boolean;
  fFileName : AnsiString;
public
  constructor Create(const AFileName : AnsiString);
  property IsAudio : Boolean read fIsAudio;
  property FileName :AnsiString read fFileName;
end;

///////////////
constructor TMediaItem.Create(const AFileName: AnsiString);
var
uzantisi:string;
begin
  inherited Create;
  fFileName := AFileName;
  fIsAudio := false;
  uzantisi:=ExtractFileExt(fFileName);
  if  uzantisi='.mp3' then fIsAudio:=true else fIsAudio:=false;
end;
Cevapla
#2
AnsiString değilde String kullansan...
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#3
(04-04-2017, Saat: 22:26)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAnsiString değilde String kullansan...

Onuda denedim , fakat sonuç aynı.
Cevapla
#4
(04-04-2017, Saat: 22:48)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(04-04-2017, Saat: 22:26)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAnsiString değilde String kullansan...

Onuda denedim , fakat sonuç aynı.

FileName değerini nereden alıyorsunuz onu anlamadım?
WWW
Cevapla
#5
Şöyle göstereyim. 
Listboxta ikinci bir alan oluşturuyorum.
Bir klasördeki mp3 leri aşağıdaki kod ile bulup  Form1.Playlist_ListBox.Items.AddObject(Rec.Name , TMediaItem.Create(yolu)); diyerek
listboxtaki birinci alana şarkı adını oluşturduğum ikinci alana ise şarkının yolunu ve adını ekliyorum. Aşağıdaki aramada Tsearch ten geri dönen değerler Path ve Rec.name. Bunları bir değişkene alıp (Yolu değişkeni) listboxa ekliyorum



procedure Playlist_yukle(const PathName,FileName: AnsiString; const InDir: boolean );

var Rec  : TSearchRec;
   Path,yolu : string;

begin
if Form1.Playlist_ListBox.ItemIndex>-1 then Form1.Playlist_ListBox.Clear;
  Path := IncludeTrailingBackslash(PathName);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
try
  repeat
        yolu:= Path+Rec.Name;

        if pos('.mp3',Rec.Name)>0 then System.Delete(rec.Name, Pos('.mp3', rec.Name) , Pos('.mp3', rec.Name) + Length('.mp3')-1 );
        if pos('.mp4',Rec.Name)>0 then System.Delete(rec.Name, Pos('.mp4', rec.Name) , Pos('.mp4', rec.Name) + Length('.mp4')-1 );

        Form1.Playlist_ListBox.Items.AddObject(Rec.Name , TMediaItem.Create(yolu));

  until FindNext(Rec) <> 0;
finally
  FindClose(Rec);
end;
If not InDir then Exit;
if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
try
  repeat
   if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') and (Rec.Name<>'..') then
        Playlist_yukle( Path + Rec.Name, FileName, True);
  until FindNext(Rec) <> 0;
finally
  FindClose(Rec);
end;
end;
Cevapla
#6
var
 L_File_Name: string;
begin
  for L_File_Name in TDirectory.GetFiles('C:\test') do
  begin
     Playlist_ListBox.Items.AddObject(L_File_Name , nil);
  end;
end;

   
Cevapla
#7
Sorun uzun dosya isimlerinden kaynaklı olabilir. FindFirst kullanarak dosya isimlerini aldığınızda Windows uzun isimler için ~ karakterini kullanıyor.(Ne kadar uzunlukta yada hangi kurala bağlı olarak bunu yapıyor bilmiyorum ama MSDN'de yazıyordur)
Emin değilim ama sizin sıkıntınız bu olabilir.

Sanırım ben sorunuzu yanlış anladım Sad
There's no place like 127.0.0.1
WWW
Cevapla
#8
(05-04-2017, Saat: 09:23)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSorun uzun dosya isimlerinden kaynaklı olabilir. FindFirst kullanarak dosya isimlerini aldığınızda Windows uzun isimler için ~ karakterini kullanıyor.(Ne kadar uzunlukta yada hangi kurala bağlı olarak bunu yapıyor bilmiyorum ama MSDN'de yazıyordur)
Emin değilim ama sizin sıkıntınız bu olabilir.

Sanırım ben sorunuzu yanlış anladım Sad

Yok kısa isimlerde de aynı. FindFirstten çıkan bilgiyi kontrol ettirdim. Değer normal geliyor .  Sorun Rusça bir stringi Listbox.İtems.Addobject diyerek listboxa eklerken oluyor. Türkçe eklediğinizde veya Listbox.items.add diyerek eklediğinizde sorun yok. Sadece Listbox.items.AddObject ile eklediğinizde oluyor.
Aşağıdaki linkteki örneği denerseniz hatamı tam olarak size göstermiş olurum

Örnek 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#9
Uygulama içinde gerekli yerlerdeki tüm AnsiString'leri String ya da muadili unicode destekleyen bir veri türü ile değiştirmelisiniz. AnsiString veri türü unicode desteklemez.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#10
(05-04-2017, Saat: 10:33)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(05-04-2017, Saat: 09:23)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSorun uzun dosya isimlerinden kaynaklı olabilir. FindFirst kullanarak dosya isimlerini aldığınızda Windows uzun isimler için ~ karakterini kullanıyor.(Ne kadar uzunlukta yada hangi kurala bağlı olarak bunu yapıyor bilmiyorum ama MSDN'de yazıyordur)
Emin değilim ama sizin sıkıntınız bu olabilir.

Sanırım ben sorunuzu yanlış anladım Sad

Yok kısa isimlerde de aynı. FindFirstten çıkan bilgiyi kontrol ettirdim. Değer normal geliyor .  Sorun Rusça bir stringi Listbox.İtems.Addobject diyerek listboxa eklerken oluyor. Türkçe eklediğinizde veya Listbox.items.add diyerek eklediğinizde sorun yok. Sadece Listbox.items.AddObject ile eklediğinizde oluyor.

Yukarda yazdığım kodu test ettiniz mi?
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Datasnap Türkçe karakter sorunu [Çözüldü] hakanharbeli 4 107 11-02-2018, Saat: 03:29
Son Yorum: hakanharbeli
Star ıdHTTP Post hakkında? [Çözüldü] Cyber 1 84 06-02-2018, Saat: 13:36
Son Yorum: Cyber
  Form create h.k (Çözüldü ) cinarbil 12 266 25-01-2018, Saat: 12:09
Son Yorum: cinarbil
  Wsdl Xml Importer(Çözüldü) yhackup 17 221 09-01-2018, Saat: 15:42
Son Yorum: yhackup
  PAnsiChar ile başım dertte (Çözüldü) erkankurtaga 2 220 22-12-2017, Saat: 11:25
Son Yorum: erkankurtaga



Konuyu Okuyanlar: 1 Ziyaretçi