Pascal da Txt Uzantılı Dosya Oluşturmak

Bir önceki dökümanımızda Pascal'ın temel kodlarını anlatmıştık bu dökümanımızda ise Pascal'da yapılan programda girilen değerleri bir veri deposunda saklamayı ve oradan çağırıp kullanmayı anlatacağız.

Öncelikle dosyalama işlemindeki temel kodları öğrenelim;

Assign:
İçine bilgileri yazdıracağımız dosyayı programa tanıtmaya yarar. Sürekli dosyanın ismini kullanıp zaman kaybetmemek içindir. Kullanımı kolaydır:

Assign(dosya_degiskeni,'dosya adi');

Bir örnekle gösterelim:

program ornek;
uses crt;
var
Dosya:text;
Assign(dosya,'ornek.dat');
...

Dosya ismini bu şekilde tanıtırız.

Rewrite:

Bu kod ile içine bilgileri kaydedeceğimiz dosyayı oluştururuz. Kullanımı şöyledir:
Rewrite(dosya_degiskeni);

Reset:
Programın içinde dosyadaki bilgileri okutmak için dosyayı açmak lazım.  O işlemide bu kod ile yaparız. Dikkat edilmesi gereken bu işlemden önce "Rewrite" ilemiyle dosyayı oluşturmamız gerkeli. Eğer oluşturulmaz ise olmayan bir dosyayı program açamayacağından hata verip kapanacaktır. Kullanımı:
Reset(dosya_degiskeni);

Append:
Programın içinde dosyaya bilgi yazdırmak içinde dosyayı açmak lazım. Bu kod o işe yarıyor.Demin de dediğimiz gibi bu dosyanın daha önce oluşturulmuş olması gerekli. Yoksa program hata verecek ve kapanacaktır. Kullanımı:
Append(dosya_degiskeni);

Close:
Append veya Reset ile açtığımız dosyayı kapatmamıza yarar. Kapatmamızdaki amaç veri kaybı yaşamamaktır. Kullanımı::
Close(dosya_degiskeni);

EOF(End Of File):
Bu fonksiyon ile bilgileri tuttuğumuz dosyanın sonuna gelinmiş mi diye kontrol ederiz. Çünkü sonuna gelinmiş bir dosyadan bilgi çekmeye çalışılırsa program yine hata verecektir ve kapanacaktır. Kullanımı:
eof(dosya_degiskeni);

Write, Writeln:

Daha önce görmüştük ekrana yazı yazdırmaya yarıyordu. Dosyalama işlemlerinde ise bilgileri tuttuğumuz dosyanın içine bilgileri işlemeye yarar. Kullanımı:
Writeln(dosya_degiskeni, bilgiler);

Read, Readln:
Bu kodlarlada bilgileri işlediğimiz dosyadan bilgileri programın okumasını sağlarız. Kullanımı Write,Writeln ' a benzer.
Readln(dosya_degiskeni,

degiskenler);

Bu işlemi yaparken dediğim gibi eof fonkisyonunu repeat until ile kullanıp kontrol ettirmemiz gerekli.

Bir örnek yapalım. Bu örnekte sadece bilgilerin tutulacağı bir dosya kullanalım.

Program ornek2;
uses crt;
var
dosya:text;
begin
assign(dosya,'tahribat.txt');
rewrite(dosya);
close(dosya);
end.

Bu programı compile edip çalıştırdığımızda programla aynı dizinde "tahribat.txt" adında bir Metin Belgesi olduğunu göreceksiniz. İçi şu anda boştur çünkü henüz bişi yazdırmadık dediğimiz gibi sadece bu dosyayı oluşturduk.

Bir de aynı örneğin içine bir şey yazdırarak yapalım:

.Program ornek3;
uses crt;
var
dosya:text;
nick:string;
id, yas:integer;
begin;
writeln('Tahribat.Com nickinizi yazınız...:');
readln(nick);
writeln('Tahribat.Com daki id no nuzu giriniz...:');
readln(id);
writeln('Yasinizi giriniz...:');
readln(yas);{Değerleri istedik ve kayıt ettik}
assign(dosya,'tahribat.txt');{dosyayı tanıttık}
rewrite(dosya);{tahribat.txt dosyasını oluşturduk}
writeln(dosya, nick, id, yas);{tahribat.txt içine girilen değerleri yazdırdık}
close(dosya);{dosyayı kapattik}
end.
"Tahribat.txt" dosyasını açtığımızda içine yazdığımız bilgileri kaydettiğini gördük. Fakat bilgiler boşluk bırakılmadan birbiri ardına yazılmış. Bunun içinde şöyle yapacağız; aşağıdaki örneğe bakınız:


Program ornek4;
uses crt;
var
dosya:text;
nick:string;
id, yas:integer;
begin;
writeln('Tahribat.Com nickinizi yazınız...:');
readln(nick);
writeln('Tahribat.Com daki id no nuzu giriniz...:');
readln(id);
writeln('Yasinizi giriniz...:');
readln(yas);
assign(dosya,'tahribat.txt');
rewrite(dosya);
writeln(dosya, 'Tahribat.Com Mürid List':50);
writeln(dosya, '-----------------------':50);
writeln(dosya);
writeln(dosya, 'Nick', ' ':33, 'Tahribat Id', '   Yas');
writeln(dosya,'--------                             ----------     ---');
writeln(dosya, nick, ' ':(41-length(nick)), id:5, yas:9);
close(dosya);
end.

Çok daha düzenli bir şekilde kaydetti gördüğünüz gibi :) burada yazdığımız sayılarla ne kadar boşluk bırakılacğını ayarladık. (41-length(nick)) bu kod ile nickin uzunluğu kadar boşluk bırakıldı. Bu program ile yalnızca bir nick kaydettik. Birden fazla kaydetmek içinde şöyle yapacağız:

Program ornek4;
uses crt;
label cikis;
var
dosya:text;
nick:string;
id, yas:integer;
begin;
assign(dosya,'tahribat.txt');
rewrite(dosya);
writeln(dosya, 'Tahribat.Com Mürid List':50);
writeln(dosya, '-----------------------':50);
writeln(dosya);
writeln(dosya, 'Nick', ' ':33, 'Tahribat Id', '   Yas');
writeln(dosya,'--------                             ----------     ---');
repeat
clrscr;
writeln('Müridin Tahribat.Com nickini yazınız...:');
readln(nick);
if nick='' then
goto cikis;

writeln('Tahribat.Com daki id no sunu giriniz...:');
readln(id);
writeln('Yasini giriniz...:');
readln(yas);
writeln(dosya, nick, ' ':(41-length(nick)), id:5, yas:9);
until 0=1;
cikis:
close(dosya);
end.

Artık programimiz birden fazla bilgiyi kaydedebiliyor. Bunu repeat until ile sağladık. 0 hiçbir zaman 1 e eşit olamayacağına göre sürekli bu döngü tekrarlanacaktır. Cikis diye bir label tanıtarak eğer nick bölümüne birşey yazılmaz ise çıkılmasını söyledik. Gördüğünüz gibi hepsi çok basit (:

Bu programdada bi sorun var. Her çalıştırdığımızda programı yeni bir tahribat.txt oluşturacak ve esikisinin yerini alacaktır. Eski bilgiler kaybolacaktır. Şimdi bir de daha önceki bilgileri silmeden onun altına devam eden bilgileri yazan bir program yapalım.

Program ornek5;
uses crt;
label cikis;
var
dosya:text;
nick:string;
id, yas:integer;
begin;
assign(dosya,'tahribat.txt');
append(dosya)
repeat
clrscr;
writeln('Müridin Tahribat.Com nickini yazınız...:');
readln(nick);
if nick='' then
goto cikis;
writeln('Tahribat.Com daki id no sunu giriniz...:');
readln(id);
writeln('Yasini giriniz...:');
readln(yas);
writeln(dosya, nick, ' ':(41-length(nick)), id:5, yas:9);
until 0=1;
cikis:
close(dosya);
end.

Her seferinde tekrar yazmasın diye başlıkları sildik bu programda. Ve bu programın çalışabilmesi için tahribat.txt programının hazır bulunması gerekli. Buraya kadar dosyaya bilgileri yazdırdık ve bilgilere dosyayı açarak baktık. Peki bu bilgilere program üzerinden nasıl bakıcaz. O da şöyle readln komutunu kullanarak:

Program ornek6;
uses crt;
var
dosya:text;
x:string;
begin;
assign(dosya,'tahribat.txt');
reset(dosya);{dosyayı okumak için açtık}
repeat
readln(dosya, x);
writeln(x);{okunan bilgiyi ekrana yazdirdik}
until eof(dosya);{dosyanin sonuna gelene kadar}
close(dosya);
readln;
end.

Buraya kadar temel olan dosyalama tekniklerini öğrendik. Bu şekilde sadece "txt" uzantılı dosyalara kayıt yaptırabiliriz. Fakat bunu öğrenmemiz gerekti çünkü işin temeli burada yatıyor. Bir sonraki dökümanımızda farklı tiplerde dosyalamaları göstereceğim.

Bu döküman ZoRKaYa tarafından Tahribat.Com için yazılmıştır...
Tarih:
Hit: 4495
Yazar: ZoRKaYa



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.