Delphi icerisinde klasor ve dosya işlemlerinde kullanabilmemiz icin bir cok fonksiyon tanımlanmıştır.





Chdir(Klasor_Yolu);



Aktif dizini değiştirmek icin kullanılan bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

Chdir(‘C:\WinNt\System32’); // Aktif dizini değiştir

end;



Yukarıda ki gibi bir kod sayesinde aktif dizin C:\WinNt\System32 olmaktadır. Bu aşamadan sonra dosyanızı sadece ismini belirterek calıştırmanız (System32 icerisindeki) mumkun olacaktır.









CloseFile(Dosya_Yolu);



Dosyayı kapatmak icin kullanılan bir prosedurdur. Aşağıdaki gibi bir kodlamayla dosyadaki ilk satırı okuyup formunuzun başlığında yazdırabilirsiniz.



Procedure TForm1.Button1Click(Sender; Object);

var

Yol : TextFile;

S : String;

begin

S := ‘Nihat Demirli’;

AssignFile(Yol, ‘C:\WinNt\Nihat.txt’);

Reset(Yol);

ReadLn(Yol , S); // Dosyadan oku

Caption := S; // Başlıkta yaz

CloseFile(Yol); // Dosyayı kapat

end;









CreateDir(Klasor_Yolu);



Klasor oluşturmak icin kullanılan bir fonksiyondur. Şayet belirtilen yerde klasoru başarıyla oluşturulursa geriye true değerini, oluşturmazsa da false değerini dondurecektir.



Procedure TForm1.Button1Click(Sender; Object);

begin

If CreateDir(‘C:\WinNt\Gaziler’) Then

Caption := ‘Klasor Oluşturuldu’

else

Caption:= ‘Klasor Oluşturulamadı’;

end;



Bu tip orneklerde var olan bir klasoru kontrol ederek kod yazarsanız daha doğru sonuc almanız mumkun olacaktır. Tabii Uses’ e FileCtrl eklemeyi unutmayalım.



Procedure TForm1.Button1Click(Sender; Object);

begin

If Not DirectoryExists(‘C:\Temp’) Then // Klasor yoksa

If Not CreateDir(‘C:\Temp’) Then // Oluştur

Caption := ‘Klasor Oluşturulamadı’;

end;



Ornekte de dikkat edildiği uzere C:\Temp klasoru yoksa bir altında ki satırı işleyecektir. Alt satırında ise mesaj klasor oluşturulmadığında vericektir. Klasor oluşturulduğunda mesaj vermeyecektir.









DeleteFile(Dosya_Yolu);



Parametre ile belirtilen yoldaki dosyayı silmek icin kullanılan bir fonksiyondur. Şayet silme işlemi başarılı bir şekilde gercekleştiyse true değerini, aksi takdirde de false değerini dondurecektir.



Procedure TForm1.Button1Click(Sender; Object);

begin

If DeleteFile(‘C:\WinNt\Nihat.Txt’) Then // Dosya Silindi ise

Caption := ‘Dosya Silindi’

else

Caption := ‘Dosya Silinmedi’;

end;









DirectoryExists(Klasor_Yolu):



Parametre ile belirtilen yolda klasorun var olup olmadığını kontrol eden fonksiyondur. Fonksiyondan true değerinin donmesi, belirtilen yolda o klasorun var olduğu anlamını taşımaktadır.



Procedure TForm1.Button1Click(Sender; Object);

begin

If DirectoryExists(‘C:\WinNt\Gaziler’) Then

Caption := ‘Klasor var’

else

Caption := ‘Klasor yok’;

end;









DiskFree(Surucu_Numarası);



Parametre ile belirtilen surucu icerisindeki boş alanı oğrenmek icin kullanabileceğiniz bir fonksiyondur. Surucu numaraları ve değerleri aşağıda verilmiştir.



Numara
Adı

1
A

2
B

3
C

4
D

5
E

6
F






Procedure TForm1.Button1Click(Sender; Object);

var

Bos_Alan : Integer;

begin

Bos_Alan := DiskFree(3); // C Surucusunde ne kadar boş yer var

Caption := IntToStr(Bos_Alan);

end;









DiskSize(Surucu_Numarası);



Parametre ile belirtilen surucudeki boş bellek miktarını hesaplayan fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Kapasite : Integer;

begin

Kapasite := DiskSize(3); // C Surucusunun toplam kapasitesi

Sonuc := DateTimeToStr(Tarih); // Aktif tarih ve saati yaz

Caption:= IntToStr(Kapasite);

end;









FileAge(Dosya_Yolu);



Dosyanın oluşturma tarihini hesaplayabilen bir fonksiyondur. Aşağıdaki şekilde bir kodlamayla tum dosyaların oluşturulma tarihlerini oğrenebilirsiniz. Fonksiyondan geriye donen değer tam sayı tipinde olacağı icin FileDateToDateTime tip donuşturme fonksiyonu sayesinde tarihsel bir değişkene aktarılabilir.



Procedure TForm1.Button1Click(Sender; Object);

var

Zaman : TDateTime;

Goster : AnsiString;

begin

Zaman:= FileDateToDateTime(FileAge('C:\Deneme.txt'));

Goster := DateTimeToStr(Zaman);

Caption:= Goster ;

end;



FileDateToDateTime(Dosya_Tarihi);



FileAge fonksiyonundan geriye donen değeri DateTime tipine donuşturmek icin kullanılan bir fonksiyondur. Yukarıda ki orneği inceleyebilirsiniz.









FileExists(Dosya_Yolu);



Belirtilen yolda dosyanın var olup olmadığını kontrol eden bir fonkiyondur. Şayet dosya belirtilen yerde varsa geriye true değeri, yoksa false değeri donecektir.



Procedure TForm1.Button1Click(Sender; Object);

var

begin

If FileExists(‘C:\WinNt\Nihat.txt’) Then // Dosya varsa

Caption := ‘Dosya var’

else

Caption := ‘Dosya Yok’;

end;









FileGetAttr(Dosya_Yolu);



Dosyaya ait ozellikleri oğrenebilmek icin kullanılan bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Yol : AnsiString;

Sayi : Integer;

begin

Yol := ‘C:\WinNt\Nihat.txt’;

Sayi := FileGetAttr(Yol);

If (Sayi and faHidden)0 Then Caption := Gizli;

If (Sayi and faSysFile)0 Then Caption := Caption+’ ’+Sistem;

If (Sayi and faReadOnly)0 Then Caption := Caption+’ ’+Salt Okunur;

If (Sayi and faDirectory)0 Then Caption := Caption+’ ’+Klasor;

If (Sayi and faArchive)0 Then Caption := Caption+’ ’+Arşiv;

If (Sayi and faVolumeId)0 Then Caption := Caption+’ ’+Etiket;

end;









FileIsReadOnly(Dosya_Yolu);



Parametre ile belirtilen yoldaki dosyanın ReadOnly (salt okunur) olup olmadığını bildiren bir fonksiyondur. Bilhassa icerisinde değişiklik yapılıp yapılamayacağı durumunun onemli olduğu durumlarda cok işinize yarayacak bir fonksiyondur. Fonksiyondan, şayet dosya ReadOnly ise true, aksi durumda false değeri donecektir.



Procedure TForm1.Button1Click(Sender; Object);

begin

If FileIsReadOnly(‘C:\WinNt\Nihat.txt’) Then

Caption := ‘Değişiklik yapamazsınız’

else

Caption := ‘Değişiklik yapabilirsiniz’;

end;









FileSearch(Dosya_Adı , Aranacak_Klasor);



Birinci parametre ile belirleyeceğiniz dosyayı, ikinci parametre ile belirleyeceğiniz klasorlerin icerisinde arar. Eğer dosyayı bulursa, bulduğu dosyanın yoluyla beraber ismini dondurecektir. Şayet dosyayı bu klasorlerde bulamazsa geriye boş string değeri donecektir.



Procedure TForm1.Button1Click(Sender; Object);

var

Yol : AnsiString;

begin

Yol := FileSearch(‘Notepad’ , ‘C:\WinNt ;C:\WinNt\System32’);

If Yol= 0 Then // Dosya yoksa

Caption := ‘Dosya Bulunamadı’

else

Caption := Yol; // C:\WinNt\Notepad.exe yazar

end;



Yukarıdaki ornekte Notepad.Exe isimli dosya C:\WinNt ve C:\WinNt\System32 klasorlerinin icerisinde aranmaktadır.





FileSetAttr(Dosya_Yolu , Ozellik);



Birinci parametre ile belirlenen dosyaya ikinci parametre ile belirlenen ozelliği atamak icin kullanılan bir fonksiyondur. Aşağıdaki şekilde bir dosyaya hidden ozelliği kazandırabilirsiniz.



Procedure TForm1.Button1Click(Sender; Object);

begin

FileSetAttr(‘C:\WinNt\Nihat.txt’ , faHidden); // Hidden ozelliği kazandır

end;



Ozellik
Acıklama

faHidden
Gizli dosya yapar

faReadOnly
Salt okunur yapar

faSysFile
Sistem dosyası ozelliği verir

faVolumeId
Etiket ozelliği kazandırır

faDirectory
Klasor

faArchive
Arşiv ozelliği verir




Şayet birden fazla ozellik aynı anda atanacak ise o zaman kodunuzu aşağıdaki şekilde değiştirmelisiniz.



Procedure TForm1.Button1Click(Sender; Object);

begin

FileSetAttr(‘C:\WinNt\Nihat.txt’ , faHidden+faReadOnly); // Hidden ve ReadOnly ozelliği kazandır

end;









FindFirst(Dosya_Yolu , Ozellik , Ad);



Belirtilen klasorun icerisinde joker karakterler ile belirtilen dosyaları arar, ilk bulduğu dosyayı geriye dondurur. Bulduğu dosyanın isim, ozellik vs. leri TSearchRec tipli ucuncu parametre olarak belirlenen değişkene aktarılır.



Procedure TForm1.Button1Click(Sender; Object);

var

Dosya : TSearchRec;

begin

FindFirst(‘C:\WinNt\*.txt’ , faAnyFile , Dosya);

Caption := Dosya.Name;

end;



Yukarıdaki ornekte C:\WinNt klasorunun icerisindeki txt dosyalarından ilk bulduğu dosya isimli değişkene aktarılmaktadır. İkinci parametre ile aranılacak dosyaya ait ozellikler belirlenebilir, sadece bu ozelliğe uyan ilk dosya bulunabilir. Burada kullanılan faAnyFile seceneği ozellikleri dikkate almadan işlem yap demektir.









findNext(Dosya);



Tek dosya değilde ( tum txt uzantılı dosyalar veya vs. vs. ) tum dosyalar listelenecek ise yani aynı isme ve ozelliğe sahip diğer dosyaların da bulunması gerekiyorsa bu durumlarda kullanacağınız fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Dosya : TSearchRec;

begin

If FindNext(‘C:\WinNt\*.txt’ , faAnyFile , Dosya)=0 Then

Begin

Repeat;

ListBox1.Items.Add(Dosya.Name);

Until FindNext(Dosya)0; // Varsa sonrakini bul

FindClose(Dosya); //Kapat

end;

end;









ForceDirectories(Klasor_Yolu);



Tek seferde ic ice birden fazla klasor oluşturmak icin kullanılan fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

Begin

ForceDirectories(‘C:\Klasor1\Klasor2\Klasor3’); // İc ice oluştur

end;









GetCurrentDir;



Parametresiz kullanılan bu fonksiyon sayesinde aktif calışılan klasorun yolu oğrenebilir.



Procedure TForm1.Button1Click(Sender; Object);

Begin

Caption := GetCurrentDir; // Aktif klasoru yolu ile yaz

end;









GetDir(Surucu_Numarası , Aktif_Klasor);



Birinci parametre ile verilen surucu numarasındaki aktif klasoru oğrenmek icin kullanılan bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Klasor : AnsiString;

begin

GetDir(3 , Klasor); // C Surucusundeki aktif klasoru ver

Caption := Klasor;

end;









RemoveDir(Klasor_Yolu);



Parametre ile belirtilen yoldaki klasoru silme icin kullanılan bir fonksiyondur. Dikkat edeceğiniz husus silinecek olan klasorun icinin boş olması gerektiğidir.



Procedure TForm1.Button1Click(Sender; Object);

begin

RemoveDir(‘C:\Klasor1’); // Klasoru sil

end;



Bu tur işlemlerde oncelikle klasorun var olup olmadığını kontrol ettirirseniz, cok daha sağlıklı sonuclar alırsınız.



Procedure TForm1.Button1Click(Sender; Object);

begin

If DirectoryExists(‘C:\Klasor1’) Then // Klasor varsa

RemoveDir(‘C:\Klasor1’); // Klasoru sil

end;





RenameFile(Dosya_Yolu , Yeni_İsim);



Birinci parametre ile verilen dosya ismini ikinci parametreyle belirtilen yere, belirtilen isimde kaydetmek icin kullanılan fonksiyondur. Dilerseniz aynı yolu gostererek bulunduğu path icerisinde sadece dosyanın ismini değiştirmenizde mumkundur.



Procedure TForm1.Button1Click(Sender; Object);

begin

RenameFile(‘C:\Deneme.txt’ , ‘C:\Avantaj.txt’);

end;









SelectDirectory(Klasor_Adı , Secenekler , Help);



Bu fonksiyon sayesinde, Select Directory penceresi actırılıp kullanıcının dizin secmesi veya yaratması sağlanabilir. Tabii Uses satırına FileCtrl eklemeyi unutmayalım.



Procedure TForm1.Button1Click(Sender; Object);

var

Yol : String;

begin

Yol := ‘C:\Program Files’;

If SelectDirectory(Yol , [sdAllowCreate , sdPerformCreate , sdPrompt] , 1000 ) Then

Caption := Yol;

end;



Yukarıdaki kodu yazıp programı calıştırırsanız, aşağıdaki pencerenin acılmasını sağlarsınız.







Bu Fonksiyonda birinci parametre Directory Name kısmında varsyılan olarak acılacağı yolu belirleyebilirsiniz. İkinci parametre icin secenekleri teker teker inceleyelim.



sdAllowCreate : Bu parametre sayesinde Directory Name edit kutusunun gozukup kullanıcının yeni bir klasor oluşturabilmesini sağlayabilirsiniz.



sdPerformCreate : Kullanıcının yeni bir klasor oluşturabilmesini sağlar.



sdPrompt :

Yanlış bir yol girildiği (olmayan bir yol) kullanıcıyı uyaracak pencerenin cıkıp cıkmamasını ayarlayan ozelliğidir. Şayet acılan pencereye kullanıcı Yes derse klasor oluşacaktır.



Şimdi yukarıdaki kodları ekleyip buton kontrolune tıklayınız. Olmayan bir klasor ismi belirtiniz. Uyarı penceresiyle karşılacaksınız. (tabii ki hata yapmadı iseniz) Pencereyi yes duğmesiyle kapatınız, klasorun oluştuğunu goreceksiniz.









ExtractFileDir(Dosya_Yolu);



Parametre ile girilen dosya yolunun bir ust klasorunun ismini donduren fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Dosya : AnsiString;

begin

Dosya := ExtractFileDir(‘C:\WinNt\Deneme.txt’);

Caption := Dosya; // C:\WinNt yazar

end;



İc ice kullanabileceğimiz fonksiyonlarda var. Bunlardan en cok kullanılan calışan exe uygulamasının yolunu almaktır. Aşağıda ki işlemde Ornekler klasorunde Project1.exe uygulamasını inceleyiniz.



Procedure TForm1.Button1Click(Sender; Object);

begin

Caption := ExtractFileDir(Application.ExeName); // Mesela C:\Program Files\Ornekler

end;









ExtractFileDrive(Yol);



Parametreyle belirtilen yolun ait olduğu ana root (c,d,e,f, vs.) adını donduren fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

Caption:= ExtractFileDrive(‘C:\WinNt\Deneme.txt’); // C yazar

end;









ExtractFileExt(Dosya_Yolu);



Parametre olarak girilen dosyanın uzantısını bulmak icin kullanılan bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

Caption := ExtractFileExt(‘C:\WinNt\Deneme.txt’); // .Txt yazar

end;









ExtractFileName(Dosya_Yolu);



Parametre olarak girilen dosya yolundan dosyanın ismini sokup alabilen bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

Caption := ExtractFileName(‘C:\WinNt\Deneme.txt’); // Deneme yazar

end;









ExtractFilePath(Dosya_Yolu);



Parametre olarak girilen dosya yolunun bulunduğu bir ust klasorun ismini donduren fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

Caption := ExtractFilePath(‘C:\WinNt\Deneme.txt’); // C:\WinNt yazar

end;









ExtractShortPathName(Dosya_Yolu);



Parametre ile belirtilen dosya yolunu, dosya ismi sekiz (uzantısı haric) karakteri gecmeyecek şekilde gosteren bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

Caption := ExtractShortPathName(‘C:\WinNt\Deneme123456789.txt ’);

end;









WinExec(Dosya_Yolu , Secenek);



Parametre ile girilen dosya yolundaki exe uzantılı dosyayı calıştırmak icin kullanılan (C’ de yazılmıştır) bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

WinExec(‘C:\Avantaj\Ver6.1\Avantaj.Exe’ , SW_SHOW); // Avantaj uygulamasını calıştır

end;



Burada kullanılan birinci parametre katar tipinde bir değişken PChar tarafından tutulabilmektedir. Şayet edit kutusunda yazmış olduğunuz dosya yolundaki exe uygulamasını calıştırmak isterseniz aşağıdaki gibi bir kodlama kullanmalısınız.



Procedure TForm1.Button1Click(Sender; Object);

var

Dosya : PChar;

begin

Dosya := PChar(Edit1.Text); // Katarı AnsiStringe cevir

WinExec(Dosya , SW_SHOW);

end;



Fonksiyonda kullanılan ikinci parametre (girilmesi zorunludur) exe dosyasının calışma şeklini belirlemek icin kullanılmaktadır. Program ekranı kaplasın mı, taskbar da mı acılsın vs. seceneklerini bu parametreyle belirleyebilirsiniz. Aşağıda ikinci parametre yerine kullanabileceğiniz tum secenekler verilmiştir.



SW_HIDE=0;
SW_SHOW=5;

SW_SHOWNORMAL=1;
SW_MINIMIZE=6;

SW_NORMAL=1;
SW_SHOWMINNOACTIVATE=7;

SW_SHOWMINIMIZED=2;
SW_SHOWNA=8;

SW_SHOWMAXIMIZED=3;
SW_RESTORE=9;

SW_MAXIMIZE=3;
SW_SHOWDEFAULT=10;

SW_SHOWNOACTIVATE=4;
SW_MAX=10;
_________________
__________________