Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Klasör Ve Dosya Fonksiyonları  (Okunma sayısı 3990 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı hayati

  • Administrator
  • *****
  • İleti: 860
  • Rep: +19/-3
  • Cinsiyet: Bay
Klasör Ve Dosya Fonksiyonları
« : 20 Ekim 2007 09:08:48 »
Chdir(Klasör_Yolu)
Aktif dizini değiştirmek için kullanılan bir fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Chdir('C:\WinNt\System32'); // Aktif dizini değiştir
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Yol : TextFile;
  4. S : String;
  5. begin
  6. S := 'delphidunyasi';
  7. AssignFile(Yol, 'C:\WinNt\dede.txt');
  8. Reset(Yol);
  9. ReadLn(Yol , S); // Dosyadan oku
  10. Caption := S; // Başlıkta yaz
  11. CloseFile(Yol); // Dosyayı kapat
  12. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. If CreateDir('C:\WinNt\delphidunyasi') Then
  4. Caption := 'Klasör Oluşturuldu'
  5. Else
  6. Caption:= 'Klasör Oluşturulamadı';
  7. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. If Not DirectoryExists('C:\Temp') Then // Klasör yoksa
  4. If Not CreateDir('C:\Temp') Then // Oluştur
  5. Caption := 'Klasör Oluşturulamadı';
  6. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. If DeleteFile('C:\WinNt\dede.Txt') Then // Dosya Silindi ise
  4. Caption := 'Dosya Silindi'
  5. else
  6. Caption := 'Dosya Silinmedi';
  7. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. If DirectoryExists('C:\WinNt\delphidunyasi') Then
  4. Caption := 'Klasör var'
  5. else
  6. Caption := 'Klasör yok';
  7. 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

Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Bos_Alan : Integer;
  4. begin
  5. Bos_Alan := DiskFree(3); // C Sürücüsünde ne kadar boş yer var
  6. Caption := IntToStr(Bos_Alan);
  7. end;


DiskSize(Sürücü_Numarası)
Parametre ile belirtilen sürücüdeki boş bellek miktarını hesaplayan fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Kapasite : Integer;
  4. begin
  5. Kapasite := DiskSize(3); // C Sürücüsünün toplam kapasitesi
  6. Sonuc := DateTimeToStr(Tarih); // Aktif tarih ve saati yaz
  7. Caption:= IntToStr(Kapasite);
  8. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Zaman : TDateTime;
  4. Goster : AnsiString;
  5. begin
  6. Zaman:= FileDateToDateTime(FileAge('C:\Deneme.txt'));
  7. Goster := DateTimeToStr(Zaman);
  8. Caption:= Goster ;
  9. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. begin
  4. If FileExists('C:\WinNt\dede.txt') Then // Dosya varsa
  5. Caption := 'Dosya var'
  6. else
  7. Caption := 'Dosya Yok';
  8. end;


FileGetAttr(Dosya_Yolu)
Dosyaya ait özellikleri öğrenebilmek için kullanılan bir fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Yol : AnsiString;
  4. Sayi : Integer;
  5. begin
  6. Yol := 'C:\WinNt\dede.txt';
  7. Sayi := FileGetAttr(Yol);
  8. If (Sayi and faHidden)<>0 Then Caption := Gizli;
  9. If (Sayi and faSysFile)<>0 Then Caption := Caption+' '+Sistem;
  10. If (Sayi and faReadOnly)<>0 Then Caption := Caption+' '+Salt Okunur;
  11. If (Sayi and faDirectory)<>0 Then Caption := Caption+' '+Klasör;
  12. If (Sayi and faArchive)<>0 Then Caption := Caption+' '+Arşiv;
  13. If (Sayi and faVolumeId)<>0 Then Caption := Caption+' '+Etiket;
  14. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. If FileIsReadOnly('C:\WinNt\dede.txt') Then
  4. Caption := 'Değişiklik yapamazsınız'
  5. else
  6. Caption := 'Değişiklik yapabilirsiniz';
  7. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Yol : AnsiString;
  4. begin
  5. Yol := FileSearch('Notepad' , 'C:\WinNt ;C:\WinNt\System32');
  6. If Yol= 0 Then // Dosya yoksa
  7. Caption := 'Dosya Bulunamadı'
  8. else
  9. Caption := Yol; // C:\WinNt\Notepad.exe yazar
  10. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. FileSetAttr('C:\WinNt\dede.txt' , faHidden); // Hidden özelliği kazandır
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. FileSetAttr('C:\WinNt\dede.txt' , faHidden+faReadOnly); // Hidden ve ReadOnly özelliği kazandır
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Dosya : TSearchRec;
  4. begin
  5. FindFirst('C:\WinNt\*.txt' , faAnyFile , Dosya);
  6. Caption := Dosya.Name;
  7. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Dosya : TSearchRec;
  4. begin
  5. If FindNext('C:\WinNt\*.txt' , faAnyFile , Dosya)=0 Then
  6. Begin
  7. Repeat;
  8. ListBox1.Items.Add(Dosya.Name);
  9. Until FindNext(Dosya)<>0; // Varsa sonrakini bul
  10. FindClose(Dosya); //Kapat
  11. end;
  12. end;


ForceDirectories(Klasör_Yolu)
Tek seferde iç içe birden fazla klasör oluşturmak için kullanılan fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. Begin
  3. ForceDirectories('C:\Klasör1\Klasör2\Klasör3'); // İç içe oluştur
  4. end;


GetCurrentDir
Parametresiz kullanılan bu fonksiyon sayesinde aktif çalışılan klasörün yolu öğrenebilir.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. Begin
  3. Caption := GetCurrentDir; // Aktif klasörü yolu ile yaz
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Klasor : AnsiString;
  4. begin
  5. GetDir(3 , Klasor); // C Sürücüsündeki aktif klasörü ver
  6. Caption := Klasor;
  7. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. RemoveDir('C:\Klasör1'); // Klasörü sil
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. If DirectoryExists('C:\Klasör1') Then // Klasör varsa
  4. RemoveDir('C:\Klasör1'); // Klasörü sil
  5. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. RenameFile('C:\Deneme.txt' , 'C:\Avantaj.txt');
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Yol : String;
  4. begin
  5. Yol := 'C:\Program Files';
  6. If SelectDirectory(Yol , [sdAllowCreate , sdPerformCreate , sdPrompt] , 1000 ) Then
  7. Caption := Yol;
  8. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Dosya : AnsiString;
  4. begin
  5. Dosya := ExtractFileDir('C:\WinNt\Deneme.txt');
  6. Caption := Dosya; // C:\WinNt yazar
  7. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Caption := ExtractFileDir(Application.ExeName); // Mesela C:\Program Files\Ornekler
  4. end;


ExtractFileDrive(Yol)
Parametreyle belirtilen yolun ait olduğu ana root (c,d,e,f, vs.) adını döndüren fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Caption:= ExtractFileDrive('C:\WinNt\Deneme.txt'); // C yazar
  4. end;


ExtractFileExt(Dosya_Yolu)
Parametre olarak girilen dosyanın uzantısını bulmak için kullanılan bir fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Caption := ExtractFileExt('C:\WinNt\Deneme.txt'); // .Txt yazar
  4. end;


ExtractFileName(Dosya_Yolu)
Parametre olarak girilen dosya yolundan dosyanın ismini söküp alabilen bir fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Caption := ExtractFileName('C:\WinNt\Deneme.txt'); // Deneme yazar
  4. end;


ExtractFilePath(Dosya_Yolu)
Parametre olarak girilen dosya yolunun bulunduğu bir üst klasörün ismini döndüren fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Caption := ExtractFilePath('C:\WinNt\Deneme.txt'); // C:\WinNt yazar
  4. end;


ExtractShortPathName(Dosya_Yolu)
Parametre ile belirtilen dosya yolunu, dosya ismi sekiz (uzantısı hariç) karakteri geçmeyecek şekilde gösteren bir fonksiyondur.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. Caption := ExtractShortPathName('C:\WinNt\Deneme123456789.txt');
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. begin
  3. WinExec('C:\Avantaj\Ver6.1\Avantaj.Exe' , SW_SHOW); // Avantaj uygulamasını çalıştır
  4. 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.
Kod:  (Unknown Language)
  1. Procedure TForm1.Button1Click(Sender; Object);
  2. var
  3. Dosya : PChar;
  4. begin
  5. Dosya := PChar(Edit1.Text); // Katarı AnsiStringe çevir
  6. WinExec(Dosya , SW_SHOW);
  7. 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;
« Son Düzenleme: 20 Ekim 2007 09:54:34 by babahayati »
Olsa dahi tenimin kıl biten her yeri bir dil, güçsüzüm şükretmeye,şükrüm binde bir bile değil (İ.R.)

Çevrimdışı Fatagun

  • Delphi 1 Level 1
  • *
  • İleti: 3
  • Rep: +0/-0
Ynt: Klasör Ve Dosya Fonksiyonları
« Yanıtla #1 : 03 Ekim 2008 13:43:10 »
Hocam Allah Razı olsun, çok güzel bilgiler...

Çevrimdışı ss80

  • Delphi 1 Level 3
  • ***
  • İleti: 20
  • Rep: +0/-0
Ynt: Klasör Ve Dosya Fonksiyonları
« Yanıtla #2 : 23 Kasım 2008 03:14:33 »
hocam dosya listeleme dosya ara procedure siyle yapiliyor. ama dizin listelemeri nasil yapacagiz?