String di Delphi
— - Excerpt dari Internet
1: Berbagai string
String adalah jenis yang paling berguna dari semua tipe data di ObjectPascal. Banyak fungsi melewati argumen dengan string. Karena ada berbagai cara untuk mendefinisikan dan menggunakan string di Delphi, termasuk string khas (string) di Pascal, string panjang yang didukung oleh Delphi (Ansistrings), array karakter yang mirip dengan bahasa C (arrayofchar), dan menunjuk ke pointer karakter (PCHAR), dll. Artikel berikut akan berbicara tentang perbedaan dan tindakan pencegahan dari jenis ini dalam definisi dan aplikasi.
1. String Pascal Tradisional
Di Pascal, string khas adalah urutan karakter dengan panjang tertentu. Setiap string memiliki panjang set (default adalah 255), dan berikut ini adalah contoh:
Var
Alamat: String;
Kode: String [50];
Alamat adalah string dengan panjang 255, dan panjang maksimum kode adalah 50.
Panjang string pascal tradisional tidak dapat melebihi 255.
Anda dapat menggunakan operasi gabungan string "+" untuk menggabungkan string bersama -sama:
Hasil: = String1+String2;
2. String panjang di Delphi
Selain mendukung string pendek Pascal tradisional, Delphi juga mendukung string panjang. Karakter panjang disebut Ansistring. String panjang secara dinamis mengalokasikan memori, yaitu, memori yang diperlukan untuk string hanya dialokasikan saat menggunakan string, sehingga panjangnya tidak terbatas. Di Delphi, jika Anda menggunakan String1: String As Type Deskripsi, String1 dapat berupa string pendek atau string panjang, tergantung pada pengaturan sakelar $ H di kompiler. Nilai default adalah $ h+, yang mewakili string panjang ANSI. String panjang diakhiri dengan nol, yang berarti bahwa string panjang sepenuhnya kompatibel dengan string null-end dalam bahasa C.
Panjang maksimum suatu string dapat diatur melalui fungsi setLength:
SetLength (string1.100);
3. Array karakter mirip dengan c
Array yang dimulai dengan 0 dapat digunakan untuk menyimpan string yang diakhiri dengan nol. Definisi berikut:
Var
Nama: Array [0..50] Ofchar;
4. PCHAR POINTER
Jika exendedsynax di Delphi telah ditetapkan (default), array karakter yang dimulai dengan 0 sepenuhnya kompatibel dengan pointer pchar yang menunjuk ke karakter, karena nama array karakter yang dimulai dengan 0 adalah pointer yang menunjuk ke karakter pertama dari array karakter . Anda dapat langsung membayar string ke pointer PCHAR. Misalnya:
var
P: PCHAR;
Mulai
P: = 'HelloWorld';
akhir;
Dengan cara ini P menunjuk ke sepotong memori yang menyimpan string 'HelloWorld' dan diakhiri dengan NULL.
Banyak fungsi API Antarmuka Program Aplikasi Windows memerlukan tipe PCHAR sebagai parameter. Saat menggunakan pointer pchar, pertama menggunakan fungsi getMem (varp: pointer; size: integer) untuk diterapkan untuk alokasi memori. Lepaskan memori. Misalnya:
Varwindir, sysdir: pchar;
Mulai
GetMem (windir, 256); {allocation memori untuk pointer}
GetWindowsDirectory (Windir, 128); {Letakkan direktori instalasi Windows ke Windir}
Showmessage ('windowsdirectoryis'+windir); {show result}
Akhir;
Dua: Konversi String
Di atas memperkenalkan definisi dan penggunaan empat jenis string di Delphi. Karena berbagai fungsi memiliki persyaratan yang berbeda untuk jenis parameter string, konversi tipe string diperlukan.
1. Anda dapat menggunakan STRPA untuk mengonversi string yang diakhiri dengan null ke string pendek Pascal. STRPCOPY menyelesaikan konversi yang berlawanan.
2. Karena string panjang berakhir dengan nol, Anda dapat mengonversi string panjang ke tipe PCHAR dengan gips. Penggunaan adalah: pchar (s), s adalah string panjang. Casting mengembalikan pointer ke karakter pertama dari string panjang, dan string runcing berakhir dengan nol. Misalnya:
Var
Keterangan, pesan: string;
Keterangan: = 'HelloWorld!';
Mssage: = 'thisisatestoflongstring';
MessageBox (0, PCHAR (pesan), PCHAR (Keterangan), MB_OK);
Ringkasan: Saat menggunakan string di Delphi, Anda harus selalu jelas tentang jenis string untuk menghindari kebingungan. Saat memahami string, Anda harus menghubungkan string dengan pointer dan alokasi memori untuk meningkatkan pemahaman.