Forum: D Programlama Dili RSS
cout.flush()'ın D deki karşılığı nedir??
Avatar
esatarslan52 (Moderatör) #1
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: cout.flush()'ın D deki karşılığı nedir??
Başlıkta da belirttiğim gibi cout.flush() ın D deki karşılığı nedir? Ben digitalmarsın sitesinde işime yarar birşey bulamadım  :-/
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
dout.flush(), veya daha genel olarak bir akım üzerinde:

import std.stream;
 
void main()
{
    auto dosya = new File("deneme_dosyası", FileMode.Out);
    dosya.writefln("merhaba dünya");
    dosya.flush();
}

ama File zaten "unbuffered" yani arabelleksiz olduğu için, herhalde zaten gerekmiyordur.

Eğer C++'da cin ve cout'un birbirlerine bağlı olmaları gibi, cin'den okumadan önce cout'un "flush edileceği" garanti olduğu gibi, belki din de dout'a bağlıdır ve din'den okumaya kalkmak zaten dout'u "flush eder." (?)

Ali
Avatar
esatarslan52 (Moderatör) #3
Üye Haz 2009 tarihinden beri · 142 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Teşekkür ederim.

Dosya işlemlerinden ziyade microsoftun sitesinden bulduğum gotoxy() fonksiyonu için lazım oldu.
void gotoxy(int x,int y)
{
    HANDLE hConsole;
    COORD cursorLoc;
    std::cout.flush();
    cursorLoc.X = x;
    cursorLoc.Y = y;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hConsole, cursorLoc);
}

Bu fonksiyonu cout kısmını değiştirerek D ye aktardığımda cursorLoc.X ve cursorLoc.Y'ye int tipinde değer atamayı kabul etmedi. Bende ubyte a dönüştürerek aktardım.
 void gotoxy(int x, int y)
        {
            HANDLE hConsole;
            COORD cursorLoc;
            dout.flush();
            cursorLoc.X = cast(ubyte)x;
            cursorLoc.Y = cast(ubyte)y;
            hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
            SetConsoleCursorPosition(hConsole, cursorLoc);
        }
Bu mesaj esatarslan52 tarafından değiştirildi; zaman: 2009-09-07, 07:34.
quasimodo (Moderatör) #4
Üye Haz 2009 tarihinden beri · 12 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
acehreli on 2009-09-06, 16:51:
ama File zaten "unbuffered" yani arabelleksiz olduğu için, herhalde zaten gerekmiyordur.

Ali

Nasıl yani gerçekten unbuffered mı? Çok ilginç.
Karaali
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben henüz dosya konusunu tam olarak anlamış değilim. :D

unbuffered olduğunu şu sayfa söylüyor:

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

Ama bir tane File da şurada var:

  http://digitalmars.com/d/2.0/phobos/std_stdio.html#File

O sonuncusu C'deki FILE'ın bir sarmasıymış... Herhalde ilki de öyledir ama... :)

Ali
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:
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-11-19, 08:14:31 (UTC -08:00)