Tiga jenis file yang digunakan untuk membaca dan menulis (I/O) di Delphi
1. Jenis file pascal lama
Tipe file diwakili oleh variabel file lama, seperti F:teks, F:File. Tiga kategori ditentukan: diketik, tidak diketik, tipe karakter dan beberapa fungsi operasi file Delphi. Misalnya: AssignPRn, Writeln, kelas file ini mirip dengan Windows Pegangan file tidak kompatibel
2. Pegangan file Windows (pegangan)
Pegangan file Pascal berorientasi objek merangkum jenis pegangan file Windows, dan pustaka fungsi operasi file merangkum fungsi Windows API. Misalnya, "Fileread" memanggil fungsi Windows API "ReadFile". Delphi menyediakan antarmuka operasi Windows API Anda sudah familiar dengan Windows API, Anda dapat menggunakan pernyataan file Windows untuk melakukan operasi file.
3. Aliran File
Aliran file adalah turunan objek dari kelas TFileStream. Aliran file adalah jenis operasi file tingkat tinggi. TFileStream menyediakan atribut pegangan.
Cara memilih jenis file
Pegangan file Windows adalah jenis operasi file tingkat rendah yang menyediakan kontrol baca dan tulis file sinkron dan asinkron yang fleksibel. Berikut ini adalah deskripsi kode semu tentang sinkronisasi file dan operasi asinkron menggunakan jenis pegangan file Windows:
Operasi sinkron:
bHasil = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead, NULL);
// periksa eof
if (bHasil && nBytesBaca == 0, ) {
// kita berada di akhir file
}
Operasi asinkron:
// menyiapkan bidang struktur yang tumpang tindih
gOverLapped.Offset = 0;
gOverLapped.OffsetTinggi = 0;
gOverLapped.hEvent = NULL;
// mencoba Operasi baca asinkron
bHasil = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead,
&gTumpang tindih);
// jika ada masalah, atau operasi async. masih tertunda ...
jika (!bHasil)
{
// menangani kode kesalahan
beralih (dwError = GetLastError())
{
kasus ERROR_HANDLE_EOF:
{
// kita sudah mencapai bagian akhir file
//selama panggilan ke ReadFile
// kode untuk mengatasinya
}
kasus ERROR_IO_PENDING:
{
// i/o asinkron masih dalam proses
// melakukan hal lain untuk sementara waktu
GoDoSomethingElse() ;
// memeriksa hasil pembacaan asinkron
bHasil = DapatkanOverlappedResult(hFile, &gOverlapped,
&nBytesBaca, SALAH) ;
// jika ada masalah...
jika (!bHasil)
{
// menangani kode kesalahan
beralih (dwError = GetLastError())
{
kasus ERROR_HANDLE_EOF:
{
// kita sudah mencapai bagian akhir file
file selama operasi asinkron
}
// menangani kasus kesalahan lainnya
}
}
} // kasus akhir
// menangani kasus kesalahan lainnya
} // saklar akhir
} // akhiri jika
Meskipun pegangan file Windows menyediakan kontrol file yang fleksibel, lebih banyak kode penanganan kesalahan harus ditulis.
Belum familiar dengan Windows API, gunakan tipe variabel file lama yang direkomendasikan Delphi.
Tipe file lama Delphi menggunakan AssignFile untuk mengaitkan variabel file dengan file fisik, yang ditentukan oleh Delphi
Berbagai operasi pada variabel file untuk melengkapi akses dan pengoperasian file. Mudah digunakan. Berikut ini menyediakan kelas variabel file
Ketik deskripsi kode operasi:
var
F: File Teks;
S: tali;
mulai
jika OpenDialog1.Execute maka { Tampilkan kotak dialog Terbuka }
mulai
AssignFile(F, OpenDialog1.FileName); { File dipilih di kotak dialog }
Setel Ulang(F);
Readln(F, S); { Membaca baris pertama dari file }
Edit1.Teks := S; { Masukkan string ke dalam kontrol TEdit }
TutupFile(F);
akhir;
akhir;
File stream adalah subkelas dari stream (kelas aliran), jadi salah satu keuntungan menggunakannya adalah ia dapat secara otomatis mewarisi properti dari kelas induknya. Ia dapat dengan mudah berinteraksi dengan kelas aliran lainnya, misalnya jika Anda ingin menulis dinamis blok memori Ke dalam disk, Anda dapat menggunakan TFileStream dan TMemoryStream untuk menyelesaikannya.