Jump to page: 1 26  
Page
Thread overview
dosyadan okuma dosyaya yazma ile ilgili bir soru/sorun
Jan 15, 2018
cos00kun
Jan 15, 2018
erdem
Jan 16, 2018
kerdemdemir
Jan 16, 2018
kerdemdemir
Jan 16, 2018
cos00kun
Jan 16, 2018
kerdemdemir
Jan 16, 2018
cos00kun
Jan 16, 2018
cos00kun
Jan 17, 2018
erdem
Jan 20, 2018
cos00kun
Jan 20, 2018
erdem
Jan 21, 2018
cos00kun
Jan 21, 2018
cos00kun
Jan 22, 2018
cos00kun
Jan 23, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
cos00kun
Jan 24, 2018
cos00kun
Jan 24, 2018
erdem
Jan 24, 2018
erdem
Jan 25, 2018
cos00kun
Jan 25, 2018
erdem
Jan 25, 2018
cos00kun
Jan 25, 2018
erdem
Jan 25, 2018
cos00kun
Jan 25, 2018
erdem
Jan 25, 2018
cos00kun
Jan 25, 2018
cos00kun
Jan 25, 2018
cos00kun
Jan 25, 2018
cos00kun
Jan 26, 2018
cos00kun
Jan 26, 2018
cos00kun
Jan 26, 2018
cos00kun
Jan 26, 2018
cos00kun
Jan 26, 2018
cos00kun
Jan 26, 2018
cos00kun
January 16, 2018

Merhabalar. Sorum konu başlığındaki gibi :-) Şimdi aşağıdaki kodu yazdığımda;

import std.stdio;
import std.string;

void main(string[] parametreler)
{
	string giriş;
	File dosya = File ("Deneme.co", "a+" );
	for(;giriş!="q";)
	{
		write("Bir String giriniz..");
		giriş=strip(readln());

		if (giriş!="q")
		dosya.writeln(giriş);
	}

	while(!dosya.eof()) {
		giriş=strip(dosya.readln());
		writeln(giriş);
	}
	readln();
}

dosyaya yazma kısmında sorun oluşmuyor ancak dosyadan okuyup ekrana basma konusunda sonuç vermiyor. Oysa;

import std.stdio;
import std.string;

void main(string[] parametreler)
{
	string giriş;
	File dosya = File ("Deneme.co", "a+" );

	for(;giriş!="q";)
	{
		write("Bir String giriniz..");
		giriş=strip(readln());

		if (giriş!="q")
		dosya.writeln(giriş);
	}
	dosya.close();     // Burayı ekledim...
	dosya.open("Deneme.co","r");  // Burayı ekledim..

	while(!dosya.eof()) {
		giriş=strip(dosya.readln());
		writeln(giriş);
	}
	readln();
}

gibi değiştirip yazdığımızda sonuç verdi !! oysa kitaptan okuduğum kadarıyla "a+" belirtecinin hem okuma hemde yazmaya ayarlı şekilde dosyayı açması gerekmezmiydi ?? neden dosyadan okuma sırasında dosya kapatıp tekrar açmam gerektide sonuç elde edebildim ?

Acaba kitaptaki şu bölüm;
'*Bazen aynı File nesnesinin başka dosyayı veya aynı dosyayı farklı erişim haklarıyla kullanması istenir. Böyle durumlarda dosyanın kapatılıp tekrar açılması gerekir: *'
okuma ve yazma erişimli dosyayı açsak bile okuma ve yazma kısmını ayrı kullanırkende kullanmamızı mı öğütlüyor?

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

January 16, 2018
import std.exception;
import std.stdio;
import std.file;


void main(string[] args)
{
   try
   {
       byte[] veri = [0x6d, 0x65, 0x72, 0x68, 0x61, 0x62, 0x61];

       auto kütük = File("ileti.txt", "a");

       kütük.rawWrite(veri);

       auto okunan = cast(byte[]) read("ileti.txt");

       writeln("Okunan ", okunan);
   }

   catch (ErrnoException hata)
   {
       // Hataları işle
   }
}

a+ ile dosyayı güncellemek için açıyor. Tüm yazılanlar sona ekleniyor.

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

January 16, 2018

Sunu deneyebiilirmisin Coskun

https://dlang.org/library/std/stdio/file.rewind.html

import std.stdio;
import std.string;

void main(string[] parametreler)
{
string giriş;
File dosya = File ("Deneme.co", "a+" );

for(;giriş!="q";)
{
write("Bir String giriniz..");
giriş=strip(readln());

   if (giriş!="q")
   dosya.writeln(giriş);

}
dosya.flush(); // Bende Burayı ekledim...
dosya.rewind(); //Bende Burayı ekledim..

while(!dosya.eof()) {
giriş=strip(dosya.readln());
writeln(giriş);
}
readln();
}

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

January 16, 2018

Cok akitf olmadigim bir toplantidaydim dayanamadim denedim

ir String giriniz..erdedem
Bir String giriniz..erdem
Bir String giriniz..erdem
Bir String giriniz..q

erdedem
erdem
erdem

Calisti sanki. Cursor dosyanin sonunda oldugu icin basa sarman gerekiyordu anladigim kadariyla.

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

January 16, 2018

a+ ile actiginda her zaman sonda oluyor. Rewind cagirip basa sarmadigin surece okuma yapamaman gerekiyor.Tam basa degilde orta yerlere gitmek istiyorsan fseek kullanabilirsin. a+ benim en cok kullandigim format boylece daha once yazdigim seylerin ustune yazilmiyor. Son kaldigim noktadan dosyanin ustune ekleniveriyor.

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

January 16, 2018

Öncelikle teşekkür ederim her ikinizede.. ben zaten dosyay yazıp okuyabiliyorum burda bir problemim yok sadece "a+" nın dosyada hem okuma hem yazmaya destek vermesine rağmen her iki işlemi kullanırken neden sonuç üretemediğini öğrenmek istedim :blush:

Bir şekilde okuma yaptıysak ondan sonra yazma yapıyorken dosyayı close() ile kapatıp tekrar open() ile yada yeniden dosya tanımlayarak açmamız gerekiyor.. Bu durumda ben neden "a+" yı kullanayımki :rolleyes: gider önce "w" ile yazar ardından "r" ile okuturum olur biter madem ki hem okuma hem yazmayı "a+" işlemi ile aynı anda kullanamıyorsam..

Bu arada rawRead() ve rawWrite() hakkında da biraz bilgi verilirse iyi olur..
teşekkürler..

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

January 16, 2018

Alıntı (kerdemdemir):

>

....Cursor dosyanin sonunda oldugu icin basa sarman gerekiyordu anladigim kadariyla.

Bu mantıklı geldi bana yani yazınca dosya sonuna gidiyor belirteç.. ama kitaptan okuduğum kadarıyla "a+" ile işlem yaparken eğer dosyaya yazılacaksa dosyanın en sonuna , dosyadan okuma yapılacaksada dosyanın en başına konumlanıyor cursor indexi diye biliyorum bu durumda yanlışım yoksa bu tezimiz çürümüş oluyor :rolleyes: yada yanlışım var :-)

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

January 16, 2018

kerdemdemir senin dediğini denedim ve sanırım haklısın.. a+ ile açılan dosyada imleç sonda oluyor bunu yukarıdaki programda a+ yı kullanarak direk ilk işlemi okuma yaptığımda yine aynı şekilde sonuç üretememesinden anladım .. Ben kitapta şu bölümdeki yazılanlara göre mantık yürüttüm;

burada şöyle yazıyor ( http://ddili.org/ders/d/dosyalar.html );

a+   okuma ve sonuna yazma erişimi
dosya yoksa: boş olarak oluşturulur..
dosya zaten varsa: içeriği korunur; başından okunacak ve sonuna yazılacak şekilde hazırlanır.

Bende sandımki dosyadan okumaya çalıştığımızda imleci başa alıyor , yazmaya çalıştıımızda sona alıyor. (nasıl olacaksa o ) Belki aynı zamanda D dili düşük seviyeli de bir dil olmasaydı şayet belki bu dediğim olabilirdi bilemiyorum :-p
umarım yanlış birşeyler anlamamışımdır..
saygılar sevgiler..

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

January 17, 2018

Alıntı (cos00kun):

>

Bu arada rawRead() ve rawWrite() hakkında da biraz bilgi verilirse iyi olur..

Bunlar dosyaya ikili yazıp okuyor. Örneğin örnek programın kütüğe ne yazdığına bakabilirsin.

Bir de dosyaya normal yazma ile ikili yazma arasında ne fark olduğunu anlamak için şu eski iletiye bakabilirsin. Ya da aynı veriyi hem normal hem ikili yazıp boyutlarını karşılaştırabilirsin.

http://ddili.org/forum/thread/352

Bu belgede D'de kütük işlemleri ile ilgili oldukça fazla bilgi var.

Working with files in the D programming language (http://nomad.uk.net/articles/working-with-files-in-the-d-programming-language.html)

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

January 20, 2018

evet şimdi kodumuz şu şekilde oldu (tamamını okutmuyorum çok yer kaplamasın diye)

import std.stdio;
import std.string;
import std.file;
import std.format;

void main(string[] parametreler)
{
	short numEntities;
	ushort id;
	ushort collisionType;
	float collisionRadius;
//.........
//..........

	File dosya = File ("FALCON4.ct", "rb" );
	numEntities = dosya.rawRead(new short[1])[0];

	for(int i=0;i<6; i++)  { // Şimdilik bu 6 dönüyor ancak program bitiminde kayut sayısı kadar dönecek..
		id = dosya.rawRead(new ushort[1])[0];
		collisionType = dosya.rawRead(new ushort[1])[0];
		collisionRadius = dosya.rawRead(new float[1])[0];
//.........
//..........

		writeln("Num Entities= ",numEntities);
		writeln("Id= ",id);
		writeln("Collision Type= ",collisionType);
		writeln("collision Radius= ",collisionRadius);
//.........
//..........
	}
	dosya.close();
	readln();
}

artık istediğimiz şekilde değişkenlerle oynayabiliyoruz şimdi bu aşamada ben bu işleminde

for(int i=0;i<6; i++)  { // Şimdilik bu 6 dönüyor ancak program bitiminde kayut sayısı kadar dönecek..

for döngüsünü dosyada 'numEntities' kadar kayıt yaptığından o kadar döndüreceğim..
aşağıdaki değişiklikleri yapınca sıkıntı olmuyor

...........
...........
	short numEntities;
	numEntities = dosya.rawRead(new short[1])[0];

   ushort[] id;
   ushort[] collisionType;
   float[] collisionRadius;
	//.....
	//.....

	id.length=numEntities;
	collisionType.length=numEntities;
	collisionRadius.length=numEntities;
	//.....
	//.....

	for(int i=0;i<numEntities; i++)  { // Şimdilik bu 6 dönüyor ancak program bitiminde kayıt sayısı kadar dönecek..
		id[i] = dosya.rawRead(new ushort[1])[0];
		collisionType[i] = dosya.rawRead(new ushort[1])[0];
		collisionRadius[i] = dosya.rawRead(new float[1])[0];
		//.....
		//.....

		writeln("Num Entities= ",numEntities);
		writeln("Id= ",id[i]);
		writeln("Collision Type= ",collisionType[i]);
		writeln("collision Radius= ",collisionRadius[i]);
		//.....
		//.....

}
   dosya.close();
   readln();
}

ancak şöyle birşey denediğimde de aslında burda ki işlemin aynısını yapıyor gibi görünsede işlemde hata alıyorum

.....
.....
ushort[numEntities] id;
   ushort[numEntities] collisionType;
   float[numEntities] collisionRadius;
	//.....
	//.....

acaba Dizilerde [] parantezleinin içine bir değişken i atamıyormuyduk ? yoksa yoğun bir günün ardından kafam yine karıştıda basit hatta çok basit birşşeyimi atlıyorum :rolleyes:

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

« First   ‹ Prev
1 2 3 4 5 6