13.Dosya İşlemleri (File I/O) – Temel Seviye

Delphi Logo
Delphi Logo
image text

13. Dosya İşlemleri (File I/O) – Temel Seviye

Delphi programlama dilinde dosya işlemleri (File I/O), programınızın dış dünya ile iletişim kurmasını sağlayan temel bir yetenektir. Bu, verilerin kalıcı olarak saklanması, yapılandırılmış verilerin okunması, log dosyalarının oluşturulması veya farklı uygulamalar arasında veri alışverişi gibi birçok senaryoda kullanılır. Bu makalede, Delphi’de dosya işlemlerinin temel seviyesine odaklanacağız ve dosya okuma, yazma ve yönetme konularını ele alacağız.

Dosya İşlemlerine Giriş

Dosya işlemleri, programınızın disk üzerindeki dosyalarla etkileşim kurmasını içerir. Bu etkileşim, dosyaları açma, okuma, yazma, kapatma ve silme gibi işlemleri kapsar. Delphi, dosya işlemlerini gerçekleştirmek için çeşitli fonksiyonlar ve nesneler sunar.

Dosya Türleri

Delphi’de, temelde iki tür dosya bulunur:

  • Metin Dosyaları (Text Files): ASCII veya Unicode karakterler içeren dosyalardır. İnsan tarafından okunabilir formatta veri saklarlar.
  • İkili Dosyalar (Binary Files): Herhangi bir türde veri (sayılar, yapılar, nesneler vb.) içerebilen dosyalardır. Genellikle insan tarafından doğrudan okunamazlar.

Metin Dosyası İşlemleri

Metin dosyaları, genellikle yapılandırılmış verileri saklamak ve işlemek için kullanılır. Delphi’de metin dosyalarıyla çalışmak için `TextFile` türünü ve ilgili fonksiyonları kullanırız.

Dosya Açma ve Kapama

Bir metin dosyasını açmak için `AssignFile`, `Reset` (okuma için) veya `Rewrite` (yazma için) fonksiyonları kullanılır. Dosya işlemleri tamamlandıktan sonra `CloseFile` fonksiyonu ile dosya kapatılmalıdır.

Pascal

var
  MyFile: TextFile;
begin
  AssignFile(MyFile, 'data.txt');
  Rewrite(MyFile); // Yeni bir dosya oluştur veya varsa üzerine yaz
  // Dosyaya yazma işlemleri
  CloseFile(MyFile);
end;

Okuma için ise:

Pascal

var
  MyFile: TextFile;
begin
  AssignFile(MyFile, 'data.txt');
  Reset(MyFile); // Dosyayı okuma modunda aç
  // Dosyadan okuma işlemleri
  CloseFile(MyFile);
end;

Dosyaya Yazma

Metin dosyasına veri yazmak için `Write` veya `WriteLn` fonksiyonları kullanılır. `Write`, veriyi olduğu gibi dosyaya yazarken, `WriteLn` veriyi yazdıktan sonra bir satır sonu karakteri ekler.

Pascal

var
  MyFile: TextFile;
begin
  AssignFile(MyFile, 'output.txt');
  Rewrite(MyFile);
  WriteLn(MyFile, 'Merhaba, Dünya!');
  WriteLn(MyFile, 'Bu bir Delphi örneğidir.');
  CloseFile(MyFile);
end;

Dosyadan Okuma

Metin dosyasından veri okumak için `Read` veya `ReadLn` fonksiyonları kullanılır. `Read`, belirli sayıda karakteri okurken, `ReadLn` bir satır sonuna kadar okur.

Pascal

var
  MyFile: TextFile;
  Line: string;
begin
  AssignFile(MyFile, 'output.txt');
  Reset(MyFile);
  while not Eof(MyFile) do
  begin
    ReadLn(MyFile, Line);
    ShowMessage(Line); // Okunan satırı göster
  end;
  CloseFile(MyFile);
end;

`Eof(MyFile)` fonksiyonu, dosyanın sonuna gelinip gelinmediğini kontrol eder. Bu, döngü içinde dosya okurken önemlidir.

İkili Dosya İşlemleri

İkili dosyalar, yapılandırılmış verileri daha verimli bir şekilde saklamak için kullanılır. Delphi’de ikili dosyalarla çalışmak için `File` türünü ve ilgili fonksiyonları kullanırız.

Dosya Açma ve Kapama (İkili)

İkili dosyaları açmak için `AssignFile`, `Reset` (okuma için) veya `Rewrite` (yazma için) fonksiyonları kullanılır. Ancak, ikili dosyalar için `File` türü kullanılır.

Pascal

var
  MyFile: File;
begin
  AssignFile(MyFile, 'data.bin');
  Rewrite(MyFile, 1); // Boyut parametresi (genellikle 1 kullanılır)
  // Dosyaya yazma işlemleri
  CloseFile(MyFile);
end;

Okuma için:

Pascal

var
  MyFile: File;
begin
  AssignFile(MyFile, 'data.bin');
  Reset(MyFile, 1); // Boyut parametresi (genellikle 1 kullanılır)
  // Dosyadan okuma işlemleri
  CloseFile(MyFile);
end;

Dosyaya Yazma (İkili)

İkili dosyaya veri yazmak için `BlockWrite` fonksiyonu kullanılır. Bu fonksiyon, bir bellek bloğunu doğrudan dosyaya yazar.

Pascal

var
  MyFile: File;
  Data: array[0..9] of Integer;
  i: Integer;
begin
  AssignFile(MyFile, 'data.bin');
  Rewrite(MyFile, SizeOf(Integer));

  // Veri doldur
  for i := 0 to 9 do
    Data[i] := i * 10;

  BlockWrite(MyFile, Data, SizeOf(Data));
  CloseFile(MyFile);
end;

Dosyadan Okuma (İkili)

İkili dosyadan veri okumak için `BlockRead` fonksiyonu kullanılır. Bu fonksiyon, dosyadan bir bellek bloğunu okur.

Pascal

var
  MyFile: File;
  Data: array[0..9] of Integer;
  i: Integer;
  BytesRead: Integer;
begin
  AssignFile(MyFile, 'data.bin');
  Reset(MyFile, SizeOf(Integer));

  BlockRead(MyFile, Data, SizeOf(Data), BytesRead);

  // Okunan veriyi işle
  for i := 0 to 9 do
    ShowMessage(IntToStr(Data[i]));

  CloseFile(MyFile);
end;

`BlockRead` fonksiyonu, okunan byte sayısını `BytesRead` parametresinde döndürür. Bu, dosyanın sonuna ulaşıldığında veya bir hata oluştuğunda önemlidir.

Ek Fonksiyonlar ve Dikkat Edilmesi Gerekenler

  • FileExists(FileName: string): Boolean: Dosyanın var olup olmadığını kontrol eder.
  • DeleteFile(FileName: string): Boolean: Dosyayı siler.
  • RenameFile(OldName, NewName: string): Boolean: Dosyanın adını değiştirir.
  • Dosya işlemlerinde hata kontrolü önemlidir. `IOResult` değişkenini kullanarak hataları kontrol edebilirsiniz.
  • Dosyaları açarken ve kapatırken dikkatli olun. Açık unutulan dosyalar, kaynak tüketimine ve veri kaybına neden olabilir.

Sonuç

Delphi’de dosya işlemleri, uygulamalarınızın dış dünya ile etkileşim kurmasını sağlayan güçlü bir araçtır. Bu makalede, temel metin ve ikili dosya işlemlerini ele aldık. Bu bilgilerle, kendi uygulamalarınızda dosya okuma, yazma ve yönetme işlemlerini gerçekleştirebilirsiniz. Unutmayın, dosya işlemlerinde dikkatli olmak ve hata kontrolünü ihmal etmemek önemlidir.

Dosya işlemleri konusunu daha derinlemesine incelemek için Delphi’nin online yardımına ve çeşitli kaynaklara başvurabilirsiniz. Başarılar!

Önemli Not: Bu makale temel seviyede dosya işlemlerini kapsamaktadır. Daha karmaşık senaryolar için, örneğin veritabanı işlemleri veya ağ üzerinden dosya transferi, daha gelişmiş teknikler ve kütüphaneler kullanmanız gerekebilir.

Umarım bu makale Delphi programlama dilinde dosya işlemleri konusunda size yardımcı olmuştur. İyi kodlamalar!

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*