Mekanisme membaca dan menulis komponen Delphi (1)
1. Pengenalan objek streaming (Stream) dan objek baca-tulis (Filer)
Dalam pemrograman berorientasi objek, manajemen data berbasis objek memainkan peran penting. Di Delphi, dukungan untuk manajemen data berbasis objek merupakan fitur utama.
Delphi adalah lingkungan pengembangan terintegrasi yang menggabungkan desain visual berorientasi objek dengan bahasa berorientasi objek. Inti dari Delphi adalah komponen. Komponen adalah jenis objek. Aplikasi Delphi seluruhnya dibangun dari komponen, sehingga mengembangkan aplikasi Delphi berkinerja tinggi pasti akan melibatkan teknologi manajemen data berbasis objek.
Pengelolaan data objek mencakup dua aspek:
● Gunakan objek untuk mengelola data
● Pengelolaan berbagai objek data (termasuk objek dan komponen)
Delphi merangkum kelas manajemen data berbasis objek menjadi objek Stream (Stream) dan objek Filer (Filer), dan menerapkannya ke semua aspek Visual Component Class Library (VCL). Mereka menyediakan fungsi yang kaya untuk mengelola objek di memori, penyimpanan eksternal, dan sumber daya Windows.
Objek streaming, juga dikenal sebagai objek streaming, adalah nama kolektif untuk TStream, THandleStream, TFileStream, TMemoryStream, TResourceStream, dan TBlobStream. Mereka masing-masing mewakili kemampuan untuk menyimpan data di berbagai media. Mereka mengabstraksi operasi manajemen berbagai tipe data (termasuk objek dan komponen) di memori, memori eksternal, dan bidang database ke dalam metode objek, dan memanfaatkan sepenuhnya teknologi berorientasi objek Keuntungannya adalah aplikasi dapat menyalin data di berbagai objek Stream dengan cukup mudah.
Objek baca-tulis (Filer) meliputi objek TFiler, objek TReader, dan objek TWriter. Objek TFiler adalah objek dasar untuk membaca dan menulis file. TReader dan TWriter terutama digunakan dalam aplikasi. Objek TReader dan TWriter mewarisi langsung dari objek TFiler. Objek TFiler mendefinisikan properti dasar dan metode objek Filer.
Objek Filer pada dasarnya menyelesaikan dua fungsi utama:
● Akses file formulir dan komponen dalam file formulir
●Menyediakan buffering data untuk mempercepat operasi pembacaan dan penulisan data
Untuk mendapatkan pemahaman persepsi tentang objek streaming dan objek baca-tulis, mari kita lihat contohnya terlebih dahulu.
a) Tulis file
Prosedur TFomr1.WriteData (Pengirim: TObject r;
Var
Aliran File:TFilestream;
Penulis Saya: Penulis Twitter;
saya: bilangan bulat
Mulai
FileStream:=TFilestream.create('c:/Test.txt',fmopenwrite);//Membuat objek aliran file
Penulis Saya:=TWriter.create(FileStream,1024); //Kaitkan Penulis Saya dengan FileStream
Mywriter.writelistbegin; //Menulis tanda awal daftar
Untuk i:=0 hingga Memo1.lines.count-1 lakukan
Mywriter.writestring(memo1.lines[i]); //Menyimpan informasi teks dalam komponen Memo ke file
Mywriter.writelistend; //tulis tanda akhir daftar
FileStream.seek(0,sofrombeginning); //Penunjuk objek aliran file berpindah ke awal aliran
Mywriter.free; //Lepaskan objek Mywriter
FileStream.free; //Lepaskan objek FileStream
Akhir;
b) Membaca file
prosedur TForm1.ReadData(Pengirim: TObject);
Var
Aliran File:TFilestream;
Pembaca saya: TReader;
Mulai
FileStream:=TFilestream.create('c:/Test.txt',fmopenread);
Pembaca Saya:=TRreader.create(FileStream,1024); //Kaitkan Pembaca Saya dengan FileStream
Myreader.readlistbegin; //Bacakan tanda awal daftar tertulis
Memo1.lines.clear; //Menghapus isi teks komponen Memo1
Meskipun bukan myreader.endoflist lakukan //Perhatikan metode TReader: endoflist
Mulai
Memo1.lines.add(myreader.readstring); //Tambahkan string baca ke komponen Memo1
Akhir;
Myreader.readlistend; //Bacakan tanda akhir daftar yang tertulis
Myreader.free; //Lepaskan objek Myreader
FileStream.free; //Lepaskan objek FileStream
Akhir;
Dua proses di atas, yang satu adalah proses menulis dan yang lainnya adalah proses membaca. Proses penulisan melewati TWriter dan menggunakan TFilestream untuk menyimpan konten (informasi teks) dalam Memo sebagai file biner yang disimpan di disk. Proses membaca adalah kebalikan dari proses menulis. Melalui TReader, TFilestream digunakan untuk mengubah isi file biner menjadi informasi teks dan menampilkannya di Memo. Saat Anda menjalankan program, Anda dapat melihat bahwa proses membaca dengan setia mengembalikan informasi yang disimpan oleh proses penulisan.
Diagram berikut menjelaskan hubungan antara objek data (termasuk objek dan komponen), objek streaming, serta objek baca dan tulis.
Gambar (1)
Perlu dicatat bahwa objek baca-tulis seperti objek TFiler, objek TReader, dan objek TWriter jarang dipanggil secara langsung oleh penulis aplikasi.Mereka biasanya digunakan untuk membaca dan menulis keadaan komponen.Mereka memainkan peran yang sangat penting dalam membaca -menulis mekanisme komponen.
Untuk objek streaming Stream, banyak bahan referensi yang memiliki pengenalan yang sangat detail, sedangkan bahan referensi untuk objek TFiler, objek TReader, dan objek TWriter, terutama mekanisme pembacaan dan penulisan komponen, jarang ditemukan dan mekanisme penulisan.
2. Objek membaca dan menulis (Filer) serta komponen mekanisme membaca dan menulis
Objek Filer terutama digunakan untuk mengakses file form Delphi dan komponen dalam file form, jadi untuk memahami dengan jelas objek Filer, Anda harus mengetahui struktur file form Delphi (file DFM).
File DFM digunakan untuk formulir penyimpanan Delphi. Bentuk adalah inti dari pemrograman visual Delphi. Bentuknya sesuai dengan jendela dalam aplikasi Delphi, komponen visual dalam bentuk sesuai dengan elemen antarmuka di jendela, dan komponen non-visual seperti TTimer dan TOpenDialog sesuai dengan fungsi tertentu dari aplikasi Delphi. Perancangan aplikasi Delphi sebenarnya berpusat pada perancangan form. Oleh karena itu, file DFM juga menempati posisi yang sangat penting dalam desain aplikasi Delphi. Semua elemen dalam formulir, termasuk properti formulir itu sendiri, disertakan dalam file DFM.
Di jendela aplikasi Delphi, elemen antarmuka terkait satu sama lain sesuai dengan hubungan kepemilikan, sehingga struktur pohon adalah bentuk ekspresi yang paling alami, komponen-komponen dalam bentuk juga diatur sesuai dengan struktur pohon; file DFM, juga Untuk mengekspresikan hubungan ini. File DFM secara fisik disimpan dalam format teks (sebelum versi Delphi2.0, disimpan sebagai file biner), dan secara logis, hubungan antar komponen disusun dalam struktur pohon. Struktur pohon bentuknya dapat dilihat dengan jelas dari teks ini. Di bawah ini adalah isi file DFM:
objek Formulir1: TForm1
Kiri = 197
Atas = 124
…
PikselPer Inci = 96
Tinggi Teks = 13
objek Tombol1: Tombol T
Kiri = 272
…
Keterangan = 'Tombol1'
Urutan Tab = 0
akhir
objek Panel1: TPanel
Kiri = 120
…
Keterangan = 'Panel1'
TabPesanan = 1
objek Kotak Centang1: TCheckBox
Kiri = 104
…
Keterangan = 'Kotak Centang1'
Urutan Tab = 0
akhir
akhir
akhir
File DFM ini dihasilkan oleh TWriter melalui objek streaming Stream. Tentu saja, ada juga proses konversi dari file biner ke file informasi teks.
Ketika program mulai berjalan, TReader membaca form dan komponen melalui objek streaming Stream, karena ketika Delphi mengkompilasi program, ia telah mengkompilasi informasi file DFM ke dalam file executable menggunakan instruksi kompilasi {$R *.dfm} , lalu apa Pembacaan TReader sebenarnya adalah informasi tentang formulir dan komponen yang dikompilasi ke dalam file yang dapat dieksekusi.
TReader dan TWriter tidak hanya dapat membaca dan menulis sebagian besar tipe data standar di Object Pascal, tetapi juga dapat membaca dan menulis tipe lanjutan seperti Daftar dan Varian, dan bahkan membaca dan menulis Properti dan Komponen. Namun, TReader dan TWriter sendiri sebenarnya menyediakan fungsi yang sangat terbatas, dan sebagian besar pekerjaan sebenarnya dilakukan oleh kelas TStream yang sangat kuat. Dengan kata lain, TReader dan TWriter sebenarnya hanyalah alat, mereka hanya bertanggung jawab untuk komponen membaca dan menulis, dan operasi membaca dan menulis khusus diselesaikan oleh TStream.
Karena TFiler adalah kelas nenek moyang yang sama dari TReader dan TWriter, untuk memahami TReader dan TWriter, Anda harus memulai dengan TFiler terlebih dahulu.