Thread overview
Hatalar ve çözümleri
Nov 20, 2010
qyn (qyn )
Nov 21, 2010
qyn (qyn )
November 20, 2010

D dilinde anlamadigim şekillerde access violation hatası alıyorum .örnegin şöle basit bir kodda bu hatayi aliyorum gözden kacirdigim bisey mi var acaba ? .

import std.cstream;
import std.stdio;
import std.process;
import std.random;

int main(){
	int girilen_deger=0;
	int tahmin_sayisi=0;
	int sayimiz=0;
	int puan=0;
	bool dvm=true;

	while(dvm==true){
	sayimiz=uniform(1,1000);
	writeln(" 0 ile 1000 arasi bir deger giriniz");
	din.readf(&girilen_deger);
	writeln("rasgele sayimiz =>",sayimiz,"..di");

	if( (0<sayimiz && sayimiz<500 ) && (0<girilen_deger && girilen_deger<500) ){
		++puan;

	}else if((sayimiz>=500 && sayimiz<1000) &&  (girilen_deger<1000  && girilen_deger>=500) ){

		--puan;
	}else{
		writeln("Tahmininiz tutmadi");
	}

	 writeln("Puaniniz => ",puan ,"tamammi devammi ?");
	 din.readf(&dvm);
	 if(dvm==false){
			 break;
	 }

	}

   std.process.system("pause");

return 1;
}

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

November 20, 2010

Hata, din.readf(&dvm) satırında oluşuyor çünkü din.readf, girişten bool değer okumayı bilmiyor. Bu, benim oluşturduğum ilk hata raporuydu sanırım. Nasıl bool değerler 'false' ve 'true' olarak yazılıyorlarsa, aynı karakterlerden de okunabilmeliydiler.

Zaten bu eksiklik nedeniyle Mantıksal İfadeler dersi için girişten_bool_oku() diye bir işlev yazmak zorunda kalmıştım:

http://ddili.org/ders/d/mantiksal_ifadeler.html

Bir çözüm, öyle bir işlev kullanman olabilir.

Ek olarak, din ve dout gidiciler; o yüzden bu eksikliğin din için giderileceğini bekleyemeyiz. Onların yerine stdin ve stdout kullanılacak. Ben de D.ershane'de tam da bu noktada takılmış durumdayım. stdin ve stdout'un biraz daha kullanışlı hale gelmelerini bekliyorum. Sonra bütün din ve dout'ların yerine stdin ve stdout koyacağım.

Ali

Not: Senin kod satırlarını code ve /code belirteçleri arasına aldım.

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

November 21, 2010

Teşekkürler Ali üstad .Ben o derse başlamadan önce yazmistim bunu.stdin ve stdout un din ve dout ' tan farki ne olabilirki acaba .Neyse cok sordum :))
code satirlarina aldigin iyi olmuş Ali üstad bende alirim bundan sonra.

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

November 21, 2010

Alıntı:

>

stdin ve stdout un din ve dout ' tan farki ne olabilirki acaba

Biz şuan cstreamdeki işlevleri kullanıyoruz. Sanırım o gidici(sanmıyorum) ve yerine stdioda stdin gelecek ki geldi. cstream C'nin kütüphanesi ile D1'den kalmış stream modülünün D1 zamanında sarmalanmasından oluşuyor. Onu geride bırakıp stdio ile uygun işlevler koyacaklar.

Örn:

import std.stdio;

void main()
{
   stdout.writeln("Merhaba !");
   char[] s;
   stdin.readf("%s", &s);

   stdout.writeln(s);
}

Bu arada stdin ya da stdout yazmadan direk writeln ya da readf yazabiliyorsunuz. Şuan stdio'dakinleri kullanabilirsiniz ancak biraz hatalı. Örn : http://d.puremagic.com/issues/show_bug.cgi?id=4922 gibi. Ancak arasında pek büyük bir fark yok.

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