DeLphide KLasör ve Dosya FonksiyonLarı..

ALpMontana

КЯaL´da TaNıMaM КuяaL´da
Katılım
28 May 2006
Mesajlar
6,644
Reaction score
0
Puanları
0
Yaş
38
Konum
Eski Açık [ALiSamiYEN]
Delphi içerisinde klasör ve dosya işlemlerinde kullanabilmemiz için bir çok fonksiyon tanımlanmıştır.

Chdir(Klasör_Yolu);


Aktif dizini değiştirmek için 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 çalıştırmanız (System32 içerisindeki) mümkün olacaktır.



CloseFile(Dosya_Yolu);


Dosyayı kapatmak için kullanılan bir prosedürdür. 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 := ‘Alp Oğuzhan MERTOL’;

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

Reset(Yol);

ReadLn(Yol , S); // Dosyadan oku

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

CloseFile(Yol); // Dosyayı kapat

end;




CreateDir(Klasör_Yolu);

Klasör oluşturmak için kullanılan bir fonksiyondur. Şayet belirtilen yerde klasörü başarıyla oluşturulursa geriye true değerini, oluşturmazsa da false değerini döndürecektir.



Procedure TForm1.Button1Click(Sender; Object);

begin

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

Caption := ‘Klasör Oluşturuldu’

else

Caption:= ‘Klasör Oluşturulamadı’;

end;



Bu tip örneklerde var olan bir klasörü kontrol ederek kod yazarsanız daha doğru sonuç almanız mümkün olacaktır. Tabii Uses’ e FileCtrl eklemeyi unutmayalım.

Procedure TForm1.Button1Click(Sender; Object);

begin

If Not DirectoryExists(‘C:\Temp’) Then // Klasör yoksa

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

Caption := ‘Klasör Oluşturulamadı’;

end;


Örnekte de dikkat edildiği üzere C:\Temp klasörü yoksa bir altında ki satırı işleyecektir. Alt satırında ise mesaj klasör oluşturulmadığında vericektir. Klasör oluşturulduğunda mesaj vermeyecektir.



DeleteFile(Dosya_Yolu);

Parametre ile belirtilen yoldaki dosyayı silmek için kullanılan bir fonksiyondur. Şayet silme işlemi başarılı bir şekilde gerçekleştiyse true değerini, aksi takdirde de false değerini döndürecektir.


Procedure TForm1.Button1Click(Sender; Object);

begin

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

Caption := ‘Dosya Silindi’

else

Caption := ‘Dosya Silinmedi’;

end;



DirectoryExists(Klasör_Yolu):



Parametre ile belirtilen yolda klasörün var olup olmadığını kontrol eden fonksiyondur. Fonksiyondan true değerinin dönmesi, belirtilen yolda o klasörün var olduğu anlamını taşımaktadır.

Procedure TForm1.Button1Click(Sender; Object);

begin

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

Caption := ‘Klasör var’

else

Caption := ‘Klasör yok’;

end;


DiskFree(Sürücü_Numarası);

Parametre ile belirtilen sürücü içerisindeki boş alanı öğrenmek için kullanabileceğiniz bir fonksiyondur. Sürücü 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 Sürücüsünde ne kadar boş yer var

Caption := IntToStr(Bos_Alan);

end;




DiskSize(Sürücü_Numarası);

Parametre ile belirtilen sürücüdeki boş bellek miktarını hesaplayan fonksiyondur.

Procedure TForm1.Button1Click(Sender; Object);

var

Kapasite : Integer;

begin

Kapasite := DiskSize(3); // C Sürücüsünün 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 tüm dosyaların oluşturulma tarihlerini öğrenebilirsiniz. Fonksiyondan geriye dönen değer tam sayı tipinde olacağı için FileDateToDateTime tip dönüştürme 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 dönen değeri DateTime tipine dönüştürmek için kullanılan bir fonksiyondur. Yukarıda ki örneğ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 dönecektir.

Procedure TForm1.Button1Click(Sender; Object);

var

begin

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

Caption := ‘Dosya var’

else

Caption := ‘Dosya Yok’;

end;


FileGetAttr(Dosya_Yolu);

Dosyaya ait özellikleri öğrenebilmek için kullanılan bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Yol : AnsiString;

Sayi : Integer;

begin

Yol := ‘C:\WinNt\Alp.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+’ ’+Klasör;

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 içerisinde değişiklik yapılıp yapılamayacağı durumunun önemli olduğu durumlarda çok işinize yarayacak bir fonksiyondur. Fonksiyondan, şayet dosya ReadOnly ise true, aksi durumda false değeri dönecektir.

Procedure TForm1.Button1Click(Sender; Object);

begin

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

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

else

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

end;


FileSearch(Dosya_Adı , Aranacak_Klasör);

Birinci parametre ile belirleyeceğiniz dosyayı, ikinci parametre ile belirleyeceğiniz klasörlerin içerisinde arar. Eğer dosyayı bulursa, bulduğu dosyanın yoluyla beraber ismini döndürecektir. Şayet dosyayı bu klasörlerde bulamazsa geriye boş string değeri dönecektir.

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 örnekte Notepad.Exe isimli dosya C:\WinNt ve C:\WinNt\System32 klasörlerinin içerisinde aranmaktadır.

FileSetAttr(Dosya_Yolu , Özellik);

Birinci parametre ile belirlenen dosyaya ikinci parametre ile belirlenen özelliği atamak için kullanılan bir fonksiyondur. Aşağıdaki şekilde bir dosyaya hidden özelliği kazandırabilirsiniz.

Procedure TForm1.Button1Click(Sender; Object);
begin

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

end;



Özellik
Açıklama

faHidden
Gizli dosya yapar

faReadOnly
Salt okunur yapar

faSysFile
Sistem dosyası özelliği verir

faVolumeId
Etiket özelliği kazandırır

faDirectory
Klasör

faArchive
Arşiv özelliği verir


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

Procedure TForm1.Button1Click(Sender; Object);

begin

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

end;



FindFirst(Dosya_Yolu , Özellik , Ad);

Belirtilen klasörün içerisinde joker karakterler ile belirtilen dosyaları arar, ilk bulduğu dosyayı geriye döndürür. Bulduğu dosyanın isim, özellik vs. leri TSearchRec tipli üçüncü 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 örnekte C:\WinNt klasörünün içerisindeki txt dosyalarından ilk bulduğu dosya isimli değişkene aktarılmaktadır. İkinci parametre ile aranılacak dosyaya ait özellikler belirlenebilir, sadece bu özelliğe uyan ilk dosya bulunabilir. Burada kullanılan faAnyFile seçeneği özellikleri dikkate almadan işlem yap demektir.


findNext(Dosya);

Tek dosya değilde ( tüm txt uzantılı dosyalar veya vs. vs. ) tüm dosyalar listelenecek ise yani aynı isme ve özelliğ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(Klasör_Yolu);

Tek seferde iç içe birden fazla klasör oluşturmak için kullanılan fonksiyondur.

Procedure TForm1.Button1Click(Sender; Object);

Begin

ForceDirectories(‘C:\Klasör1\Klasör2\Klasör3’); // İç içe oluştur

end;



GetCurrentDir;

Parametresiz kullanılan bu fonksiyon sayesinde aktif çalışılan klasörün yolu öğrenebilir.

Procedure TForm1.Button1Click(Sender; Object);

Begin

Caption := GetCurrentDir; // Aktif klasörü yolu ile yaz

end;

GetDir(Sürücü_Numarası , Aktif_Klasör);

Birinci parametre ile verilen sürücü numarasındaki aktif klasörü öğrenmek için kullanılan bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

var

Klasor : AnsiString;

begin

GetDir(3 , Klasor); // C Sürücüsündeki aktif klasörü ver

Caption := Klasor;

end;

RemoveDir(Klasör_Yolu);

Parametre ile belirtilen yoldaki klasörü silme için kullanılan bir fonksiyondur. Dikkat edeceğiniz husus silinecek olan klasörün içinin boş olması gerektiğidir.



Procedure TForm1.Button1Click(Sender; Object);

begin

RemoveDir(‘C:\Klasör1’); // Klasörü sil

end;



Bu tür işlemlerde öncelikle klasörün var olup olmadığını kontrol ettirirseniz, çok daha sağlıklı sonuçlar alırsınız.



Procedure TForm1.Button1Click(Sender; Object);

begin

If DirectoryExists(‘C:\Klasör1’) Then // Klasör varsa

RemoveDir(‘C:\Klasör1’); // Klasörü sil

end;

RenameFile(Dosya_Yolu , Yeni_İsim);

Birinci parametre ile verilen dosya ismini ikinci parametreyle belirtilen yere, belirtilen isimde kaydetmek için kullanılan fonksiyondur. Dilerseniz aynı yolu göstererek bulunduğu path içerisinde sadece dosyanın ismini değiştirmenizde mümkündür.



Procedure TForm1.Button1Click(Sender; Object);

begin

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

end;


SelectDirectory(Klasör_Adı , Seçenekler , Help);

Bu fonksiyon sayesinde, Select Directory penceresi açtırılıp kullanıcının dizin seçmesi 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ı çalıştırırsanız, aşağıdaki pencerenin açılmasını sağlarsınız.


Bu Fonksiyonda birinci parametre Directory Name kısmında varsyılan olarak açılacağı yolu belirleyebilirsiniz. İkinci parametre için seçenekleri teker teker inceleyelim.



sdAllowCreate : Bu parametre sayesinde Directory Name edit kutusunun gözüküp kullanıcının yeni bir klasör oluşturabilmesini sağlayabilirsiniz.



sdPerformCreate : Kullanıcının yeni bir klasör oluşturabilmesini sağlar.



sdPrompt :

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



Şimdi yukarıdaki kodları ekleyip buton kontrolüne tıklayınız. Olmayan bir klasör ismi belirtiniz. Uyarı penceresiyle karşılacaksınız. (tabii ki hata yapmadı iseniz) Pencereyi yes düğmesiyle kapatınız, klasörün oluştuğunu göreceksiniz.


ExtractFileDir(Dosya_Yolu);

Parametre ile girilen dosya yolunun bir üst klasörünün ismini döndüren fonksiyondur.

Procedure TForm1.Button1Click(Sender; Object);

var

Dosya : AnsiString;

begin

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

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

end;

İç içe kullanabileceğimiz fonksiyonlarda var. Bunlardan en çok kullanılan çalışan exe uygulamasının yolunu almaktır. Aşağıda ki işlemde Ornekler klasöründe 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ı döndüren 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 için 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 söküp 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 üst klasörün ismini döndüren 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ı hariç) karakteri geçmeyecek şekilde gösteren bir fonksiyondur.



Procedure TForm1.Button1Click(Sender; Object);

begin

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

end;


WinExec(Dosya_Yolu , Seçenek);

Parametre ile girilen dosya yolundaki exe uzantılı dosyayı çalıştırmak için 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ı çalış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ı çalış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 çevir

WinExec(Dosya , SW_SHOW);

end;



Fonksiyonda kullanılan ikinci parametre (girilmesi zorunludur) exe dosyasının çalışma şeklini belirlemek için kullanılmaktadır. Program ekranı kaplasın mı, taskbar da mı açılsın vs. seçeneklerini bu parametreyle belirleyebilirsiniz. Aşağıda ikinci parametre yerine kullanabileceğiniz tüm seçenekler 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;
bireyerden buldum we sizin için test ettım çalısıor:hhman:
 
Geri
Üst