Thread overview
December 30, 2009

Şuan bazı sebepler yüzünden windows kullanmak zorundayım. Bu arada Linux'ta d-okulun ders yazma sınıfını yazmasını bugün bitirmiştim. Ama windosta çalıştıramıyorum. Derledeğiğimde herhangi bir sorun çıkartmıyor ama programı çalıştırdığımda ders girme bölümüne geldiğinde türkçe karakter girince hata veriyor.

HATA:



C:\Documents and Settings\CEM VE CAN\Belgelerim\D Programlama Dili\d-okul>dmd do
kul.d işlevler/dersAdları.d işlevler/nHesaplayıcı.d işlevler/öğrenci.d

C:\Documents and Settings\CEM VE CAN\Belgelerim\D Programlama Dili\d-okul>dokul
18
Okul Numaranız :1218
1218
Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :mat
Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :ç
Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
....

Ders adını yazınız :Çıkma işlemi std.stream.WriteException: unable to write to s
tream


Kodlar İçin :http://code.google.com/p/d-okul/source/browse/trunk/i%C5%9Flevler/dersAdlar%C4%B1.d

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Zaten kodları vermiştim. Dchar[] ile çalışıyorum. Ama şimdi char[] ile denedim bir fark yok.

Konsol ayarlarınıda yaptım(yoksa zaten çıktıda türkçe harfler sorunlu olurdu.).

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Bende sorun hale devam ediyor. Ama şunu belirteyim, sorun Linux'ta değil ve tahminim Kodlarda da değil, Windows'ta. Linuxta denedim ve çalıştı.

Kod dosyası utf-8 olarak kaydediliyor. Derle diyorum hatasız derliyor. Çalıştır diyorum numaramı soruyor giriyorum, ders adını giriyorum ders adında Türkçe karakter varsa hata veriyor.

Hata



Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.
Ders adını yazınız :Çıkma işlemi için 'ç' yazınız.(40 50 kere bunu yazıyor)
Ders adını yazınız :Çıkma işlemi std.stream.WriteException: unable to write to s
tream

şeklinde

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Çıktı :

Karakterleri girin: çşiopçüğ
beklenen : c3 a7 c4 9f c5 9f c4 b1 c3 9c
gelen :

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Bu arada Türkçe olmayan karakterlerde sorun yaşamadan bayt değerini söyleyebiliyor f => 66 gibi.

Yani windowsta girişte sorun var gibi ? Başka bilgisayarlarda denemek yada windows forumlarında sormak gerekebilir.
Yada bilgisayarımın tamir edilmesini beklemem gerekece.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Konsolda cp 65001 yaptığını varsayıyorum...

Lütfen şunları karışık olarak deneyip hangi tür dizgilerin hangi işlevlerle çalıştığını söyler misin:

char[]
wchar[]
dchar[]

Şuradaki değişik işlevler:

http://digitalmars.com/d/2.0/phobos/std_stream.html

readf
readLine
readLineW
readString
readStringW

Sonunda W olanların wchar için olduğunu biliyorum.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Öncelikle, bende '"ç"d' yerine '"ç"' yazmak yetti.

Benim CentOS 5 Linux ortamım UTF-8 olarak ayarlanmış durumda. Aşağıdakileri denedim:


char[] readf   çalışıyor
wchar[] readf   çalışıyor
dchar[] readf   çalışıyor

char[] readLine   numaranın Enter'ı yüzünden ilk sefer boş
                     satır okuyor; ama sonra doğru çalışıyor
wchar[] readLine   derlenmiyor
dchar[] readLine   derlenmiyor

char[] readLineW   derlenmiyor
wchar[] readLineW   ilk ders isminde takılıyor; herhalde Enter'ı anlamıyor
dchar[] readLineW   derlenmiyor

char[] readString   dizgi uzunluğunu bilmemizi istiyor
wchar[] readString   derlenmiyor
dchar[] readString   derlenmiyor

char[] readStringW   derlenmiyor
wchar[] readStringW   uzunluğu istediği gibi, big-endian ve little-endian
                        konularında da sorunlu olabiliyor; writeStringW'nun
                        karşılığı olarak kullanılmalı
dchar[] readStringW   derlenmiyor

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

'çğşıÜ' girdiğin zaman şu programın çıktısı sende nasıl oluyor?

import std.cstream;

void göster(T)(const char[] başlık, T dizgi)
{
   dout.writef("%-20s: ", başlık);

   foreach (karakter; dizgi) {
       dout.writef("%02x ", cast(ubyte)karakter);
   }

   dout.writefln();
}

void main()
{
   const char[] beklenen = "çğşıÜ";

   char[] gelen;
   dout.writef("Karakterleri girin: ");
   din.readf(&gelen);

   göster("beklenen", beklenen);
   göster("gelen", gelen);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 30, 2009

Ben de bir çok arama yaptım. Windows'da UTF-8'in o kadar kolay olmadığını söylüyorlar. :/

Windows dil ayarlarına bakmak gerekebiliyormuş. (?)

Benim de Windows sanal makinem bir kaç ay önce bir daha açılmayacak şekilde bozulmuştu. Bundan fazla yadım edemiyorum...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 07, 2013

Anlaşılan şurada tespit ettiğim sorun 2009 yılından bu yana varmış...:)

http://ddili.org/forum/post/9333

Adresini verdiğim başlıkta ifade ettiğim gibi; tek çözümü "chcp 857" komutunu vermek ama o zaman da Türkçe karakterler düzgün görünmeyecek. Tek çare kalıyor, artık konsol programlarından uzaklaşıp GUI tarafında yazılım geliştirmek...:)

Evet, konsoldan artık uzaklaşalım. Basit denemelerimizi bile pixel'ler üzerinden yapalım. Bunun için en hafif kütüphane SDL görünmekte. Bu konuda derelict (http://www.dsource.org/projects/derelict/) gibi çatılar da mevcut ya da helen geliştirdiğim sdlmini (http://ddili.org/forum/thread/960) ve tabi hala çatı olmaktan uzakta...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]