Forum: Projeler Eski Projeler d-okul RSS
D-okul Windowsta Veri Yazma
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: 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 (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4538 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #3
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4538 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #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 (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4538 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #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 (Moderatör) #7
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Çıktı :

Karakterleri girin: çşiopçüğ
beklenen            : c3 a7 c4 9f c5 9f c4 b1 c3 9c
gelen               :
canalpay (Moderatör) #8
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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 (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4538 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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
Avatar
Salih Dinçer #10
Üye Ock 2012 tarihinden beri · 1913 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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 gibi çatılar da mevcut ya da helen geliştirdiğim sdlmini ve tabi hala çatı olmaktan uzakta...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Projeler Eski Projeler d-okul RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-12-16, 10:49:40 (UTC -08:00)