Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Delphi => Konuyu başlatan: z - 16 Aralık 2015, 21:58:42

Başlık: Ynt: Delphi - Keil - Türkçe karakter sorunu
Gönderen: z - 16 Aralık 2015, 21:58:42
Delphide yazdığım bir program Kei'in proje dosyalarından birisi üzerinde  değişiklik yapıp geri diske yazıyor.

Keili çalıştırdığımda editlenmiş dosyaya kızıyor.

Sorunun türkçe ş karakterinden kaynaklandığını gördüm.

Delphi programın yaptığı iş  bir dosyanın lokasyonunu keil dosyasında ilgili alana yazmaktan ibaret.

Eğer programımla editleme yapmak yerine dosyayı Keilde ben gösterirsem sorun çıkmıyor.

Neyse sorunsuz dosyadaki ş harfi Users\HaberleÅŸme

sorunlu dosyadaki ş harfi Users\Haberleşme

Direktör ismini Delphi, Direktory Listbox ile öğreniyor. Dosyaya yazım işlemini klasik writefile tipi komutlarla yapıyorum. Memoedit üzerinden yaparsam daha başka sorunlar da çıkıyor.

Bu türkçe karakter sorununu nasıl aşarım?




mesaj birleştirme:: 16 Aralık 2015, 20:23:09

Geçmiş yıllarda Delphi ile yazdığım programlarla word belgeleri üzerinde editleme yapıyordum. Editlediğim dosyalar print edilirken sorun çıkarıyordu.

Sorunu şöyle çözdüm ama bu kez adam gibi çözmek istiyorum.

Çözümüm Ş görürsen atıyorum Hex ?? Hex ?? yaz. Ç görürsen hex ??  Hex?? yaz gibi.



mesaj birleştirme:: 16 Aralık 2015, 21:11:54

Klein hocam yolu string değişkene değil de unicodestring değişkene okumamı önerdi.

Delphi 6 da böyle bir veri tipi bulamadım ve string yerine widestring değişken kullandım.

Şimdi de hata var fakat en azından Keil hata veriyor fakat açılıyor. Eskiden hata verip devamını da getirmiyordu.

Delphi6 da  unicodestring olayına çözümüzü varmı?

Başlık: Ynt: Delphi - Keil - Türkçe karakter sorunu
Gönderen: z - 17 Aralık 2015, 03:20:39
Sağolsun Klein araştırmış. Normalde Delphinin ileri versiyonlarını kullanıyor olsaydım  Memo1.Lines.LoadFromFile(FileName,Tencoding.Ansi) işimi görecekmiş.
Fakat 2 parametreli bu kullanıma Delphi 6 kızıyor.

Dededen kalma üsülle çözdüm artık.

function Turkce(S:string):string;
var n:integer;
begin
        result:='';
        for n:=1 to length(s) do
          begin
                 if s[n]='Ş' then Result:=Result+char(197)+char(158)
            else if s[n]='ş' then Result:=Result+char(197)+char(159)
            else if s[n]='Ç' then Result:=Result+char(195)+char(135)
            else if s[n]='ç' then Result:=Result+char(195)+char(167)
            else if s[n]='Ğ' then Result:=Result+char(196)+char(158)
            else if s[n]='ğ' then Result:=Result+char(196)+char(159)
            else if s[n]='Ü' then Result:=Result+char(195)+char(156)
            else if s[n]='ü' then Result:=Result+char(195)+char(188)
            else if s[n]='Ö' then Result:=Result+char(195)+char(150)
            else if s[n]='ö' then Result:=Result+char(195)+char(182)
            else if s[n]='İ' then Result:=Result+char(196)+char(176)
            else if s[n]='ı' then Result:=Result+char(196)+char(177)
            else Result:=Result+s[n];
          end;
end;
Başlık: Ynt: Delphi - Keil - Türkçe karakter sorunu
Gönderen: Burak B - 17 Aralık 2015, 09:38:39
Keil v5.17 kullanın Edit->Configuration->Editor->Encoding->Turkish. Eski sürümlerde bu destek yok o nedenle sorun oluyor.
Başlık: Ynt: Ynt: Delphi - Keil - Türkçe karakter sorunu
Gönderen: engerex - 17 Aralık 2015, 09:49:16
 Keil ile türkçe karakterlerli dosya kaydedip delphi ile kaydelilenle kıyasla. Fark ortaya çıkacaktır.

Delphide sonraki sürümlerde Unicode desteği geldikten sonra işler biraz karıştı. Alışmak gerekiyor. Bilgin olsun.
Başlık: Ynt: Ynt: Delphi - Keil - Türkçe karakter sorunu
Gönderen: boreas - 17 Aralık 2015, 17:17:20
StringReplace  komutu var ise bu kadar if kullanmaya gerek kalmaz.