Forum: Projeler Eski Projeler d-okul RSS
D-okul Windowsta Veri Yazma
canalpay (Moderator) #1
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Subject: D-okul Windowsta Veri Yazma
Ş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%9…
acehreli (Moderator) #2
User title: Ali Çehreli
Member since Jun 2009 · 1981 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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
canalpay (Moderator) #3
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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.).
acehreli (Moderator) #4
User title: Ali Çehreli
Member since Jun 2009 · 1981 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
In reply to post #2
Ö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
canalpay (Moderator) #5
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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
acehreli (Moderator) #6
User title: Ali Çehreli
Member since Jun 2009 · 1981 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
In reply to post #4
çğşıÜ 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
canalpay (Moderator) #7
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Çıktı :

Karakterleri girin: çşiopçüğ
beklenen            : c3 a7 c4 9f c5 9f c4 b1 c3 9c
gelen               :
canalpay (Moderator) #8
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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.
acehreli (Moderator) #9
User title: Ali Çehreli
Member since Jun 2009 · 1981 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Forum: Projeler Eski Projeler d-okul RSS
Not logged in. · Lost password · Register
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Current time: 2012-02-05, 11:07:20 (UTC -08:00)