Thread overview
Dosya işlemleri
Sep 23, 2009
Racih
Sep 23, 2009
esatarslan52
Sep 23, 2009
esatarslan52
Sep 23, 2009
Racih
September 23, 2009

Selamlar,

Burdaki derslerden öğrendiğim kadarıyla, basit bir öğrenci kayıt programcığı yazdım.



import std.stream;
import std.cstream;
import std.array;

string[][] öğrenciler;

void main()
{
	int ogr_sayisi;

	dosyaOku();
	dout.writef("Kaç Öğrenci Gireceksiniz ? : ");
	din.readf(&ogr_sayisi);

	auto sonaEkle = appender(&öğrenciler);
	for(int i = 0; i < ogr_sayisi; i++){
		char[] isim;
		char[] soyad;

		dout.writef("İsim : ");
		din.readf(&isim);
		dout.writef("Soyad : ");
		din.readf(&soyad);

		sonaEkle.put([cast(string)isim,cast(string)soyad]);
	}
	dosyaYaz(öğrenciler);
}

void dosyaYaz(string[][] öğr){

	File dosya = new File("ogrenci_dosyasi", FileMode.OutNew);
	dout.writefln(öğr[0][0]);
	if(öğr[0][0] != "İsim" && öğr[0][1] != "Soyad"){
		dosya.writefln("İsim ", " Soyad");
	}
	for(int i = 0; i < öğr.length; i++){
		dosya.writefln(öğr[i][0]," ", öğr[i][1]);
	}

	dout.writefln("Yazma işlemi başarılı !");
}
void dosyaOku(){
	auto sonaEkle = appender(&öğrenciler);

	File dosya = new File("ogrenci_dosyasi", FileMode.In);
	while(!dosya.eof()){
		char[] isim;
		char[] soyad;
		dosya.readf(&isim, &soyad);
		dout.writefln("Satır --> ", isim," ",soyad);
		sonaEkle.put([cast(string)isim,cast(string)soyad]);
	}
}

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

September 23, 2009

Eline sağlık...

Fakat Türkçe karakter içeren isimlerde hata veriyor. Ben stringleri dstring ve charlarıda dchar yapıp denedim ama işe yaramadı :-/ .

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

September 23, 2009

Sorun herzamanki gibi windowsta ozaman <_<

Alıntı:

>

if (exists(dosya_ismi))

Bende dosyanın ilk kez mi oluşturulacak yoksa daha önceden oluşturulmuş mu diye bulmak için abuk subuk kod denemeleri yapıyordum :).

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

September 23, 2009

Alıntı:

>

En baştaki dosyaOku() çağrısı bende patladı çünkü henüz klasörde "ogrenci_dosyasi" yoktu

Ahh ... ona ben düzenleme getirecektim. Düzenlemeden koymuşum. Neyseki güzel bir ekleme yapmışsınız teşekkürler ... :)

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

September 23, 2009

Çok güzel! :)

En baştaki dosyaOku() çağrısı bende patladı çünkü henüz klasörde "ogrenci_dosyasi" yoktu:

'$ ./deneme
std.stream.OpenException: Cannot open or create file 'ogrenci_dosyasi''

Programı şöyle değiştirdim:

import std.file;
// ...
string dosya_ismi = "ogrenci_dosyasi";
// ...
   if (exists(dosya_ismi)) {
       dosyaOku();
   }

Bende Türkçe karakter sorunu yok:

'$ cat ogrenci_dosyasi
İsim Soyad
Ali Ğüştenlibayır
Şörciböğrt Oğiştimengığz'

;)

Ali

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

September 23, 2009

Alıntı (esatarslan52):

>

Bende dosyanın ilk kez mi oluşturulacak yoksa daha önceden oluşturulmuş mu diye bulmak için abuk subuk kod denemeleri yapıyordum :).

Wiki'nin std.file sayfasına da gönderme yapayım tabii ki... İçinde başka yararlı fonksiyonlar da var.

Ali

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