Jump to page: 1 2
Thread overview
dout.write
Sep 23, 2009
erdem
Sep 23, 2009
esatarslan52
Sep 23, 2009
erdem
Sep 23, 2009
esatarslan52
Sep 23, 2009
erdem
Sep 23, 2009
erdem
Sep 23, 2009
erdem
Sep 23, 2009
erdem
Sep 23, 2009
erdem
Sep 23, 2009
erdem
Sep 23, 2009
erdem
September 23, 2009

Windowsta denediğim 'dout.write ("iyimisin");' doğru karakterleri ekrana basıyor fakat her harf arasında bir karakterlik boşluklar bırakıyor.Aynısı bunun için de 'dout.write ("Dosya ismi? ");' geçerli.

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

September 23, 2009

Alıntı:

>

Bu önemsiz windows'un taş devrinden kalan konsol sisteminden kaynaklanıyor olabilir.

Evet ondan olabilir.
Alıntı:

>

Ama benim asıl merak ettiğim programda üstte verdiğim gibi bir hata olup olmadığıydı.

Bende öyle bir hata vermedi sadece karakterler arasında boşluk varıdı.

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

September 23, 2009

Ya dosyalarda ilgili derslerin çözümünde ufak bir hata (http://ddili.org/ders/d/dosyalar.cozum.html) var:

 dout.write ("Dosya ismi? ");

dout.write'f' olacak. Ya da dout.write abuk subuk karakterler basıyor. Örneğin şu programda diğerleri doğru çalışırken dout.write abuk subuk karakterler basıyor..

import std.cstream;
import std.stream;
import std.stdio;

void main ()
{
   writeln ("merhaba");
   dout.writef ("nasılsın");

   dout.write ("iyimisin");
}

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

September 23, 2009

Ayrıca ilk soru da çalışması gerektiği gibi çalışmıyor gibi görünüyor. Örneğin ilk satırı boş olan bir metin dosyasından okuyup da birleştirmeye çalışınca nedense ilk satırı es geçiyor. İlk satırı göz önünde bulundurmuyor.

Örnek bir dosya öğrenciler.txt (http://farukerdemoncel.googlepages.com/ogrenciler.txt)

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

September 23, 2009

Alıntı (esatarslan52):

>

Windowsta denediğim 'dout.write ("iyimisin");' doğru karakterleri ekrana basıyor fakat her harf arasında bir karakterlik boşluklar bırakıyor.Aynısı bunun için de 'dout.write ("Dosya ismi? ");' geçerli.

dout.write utf-8 kodlaması kullanan bir sayfada diğerleri doğru çalışırken yanlış karakterler basıyor. (denemek için chcp 65001) Gene de bu windows'un utf-8 kodlamasıyla ilgili olabilir. Ama ilginç nokta diğer işlevler Türkçe karakterleri doğru basarken dout.write yanlış basıyor. Bu önemsiz windows'un taş devrinden kalan konsol sisteminden kaynaklanıyor olabilir. Ama benim asıl merak ettiğim programda üstte verdiğim gibi bir hata olup olmadığıydı.

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

September 23, 2009

Alıntı (esatarslan52):

>

Bende öyle bir hata vermedi sadece karakterler arasında boşluk varıdı.

Normal konsolda bahsettiğin gibi boşluklarla yazıyor. Ama benim yazdığım kaynak kodu UTF-8 ve UTF kodlamasını konsolda doğru gösterebilmek için chcp 65001 yapıyorum. Gene de linuxta doğru çalışıyorsa büyük ihtimal sorun yoktur :)

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

September 23, 2009

Alıntı (acehreli):

>

Erdem, ilk satırın boş olması sorununu da burada göremiyorum. Acaba 'prevCr' ("önceki readLine bir satır sonunda durdu" anlamındaymış) kullanarak bir şeyler yapabilir misin:

İlginç linux altında bu öğrenciler.txt dosyası ile doğru çalışıyor mu? Ben windows altında deniyorum hep aynı sonucu veriyor. Sonuç dosyasında ilk satır hep boş. Acaba akımın başka bir durumu boşluk karakteri basabilir mi? Ya da acaba kullandığımız FileMode.OutNew örneğin dosya oluştururken bir tane boşluk karakteri mi basıyor? Windows altında da birisi programın doğru çalışıp çalışmadığını doğrulayabilir mi?

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

September 23, 2009

Başkasını suçlamayın! Bu sefer hata bende... :)

std.stream.write, bayt bayt yazar; evet, writef olması gerekiyormuş. Çünkü ben ara belleği olduğu gibi çıkışa aktarmak değil, insanın okuyabileceği şekilde formatlı olarak istiyordum. (Gerçi bu dizgi için bunun neden farkettiğini anlamış değilim.)

Bundan sonra çok daha dikkatli olmalıyım. Tek bir harf yüzünden ve şanssızlığıma dizginin içinde Türkçe harf bulunmadığından benim ortamımda düzgün çalışıyor ama sizde olmadı. :(

Programı writef olarak düzelttim...

Erdem, ilk satırın boş olması sorununu da burada göremiyorum. Acaba 'prevCr' ("önceki readLine bir satır sonunda durdu" anlamındaymış) kullanarak bir şeyler yapabilir misin:

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

Yani acaba o fonksiyonun işlevi zaten böyle durumlar mı?

Ali

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

September 23, 2009

Kodumuz şu şekilde:

import std.cstream;
import std.stream;

void main()
{
   dout.writef("Dosya ismi? ");
   char[] girişDosyasıİsmi;
   din.readf(&girişDosyasıİsmi);

   File giriş = new File(girişDosyasıİsmi.idup, FileMode.In);

   char[] çıkışDosyasıİsmi = girişDosyasıİsmi ~ ".bak";

   File çıkış = new File(çıkışDosyasıİsmi.idup,
                         FileMode.OutNew);

   while (!giriş.eof())
       {
       char[] satır = giriş.readLine();

       if (satır.length != 0) {
           çıkış.writefln(satır);
       }
   }

   dout.writefln(çıkışDosyasıİsmi, " dosyasını oluşturdum");
}

ogrenciler.txt (girdi dosyası):
**'// boşluk'
'birinci
ikinci'
'// boşluk'
'ucuncu'
'// boşluk'
**
ogrenciler.txt.bak (çıktı dosyası):
'// boşluk'
'birinci
ikinci
ucuncu'

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

September 23, 2009

Alıntı (acehreli):

>

çıktı:

'==||== 0
==|birinci|== 7
==|ikinci|== 6
==||== 0
==|ucuncu|== 6
==||== 0'

Sende nasıl?

Ali

Çıktı şu şekilde:
**
''==||== 3'
==|birinci|== 7
==|ikinci|== 6
==||== 0
==|ucuncu|== 6
==||== 0
==||== 0'**

fazladan bir üç var :)

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

« First   ‹ Prev
1 2