デルファイの弦
- インターネットからのエクセルプト
1:さまざまな文字列
文字列は、ObjectPascalのすべてのデータ型の中で最も便利なタイプです。多くの関数は、文字列で引数を渡します。 Pascalの典型的な文字列(文字列)、Delphi(Ansistrings)に支えられた長い文字列、C言語に似た文字配列(Arrayofchar)、および文字Pointer(PCHAR)を指すなど、Delphiで文字列を定義して使用するさまざまな方法があるため、さまざまな方法があるため等次の記事では、定義と適用におけるこれらのタイプの違いと予防措置について説明します。
1。伝統的なパスカル文字列
Pascalでは、典型的な文字列は特定の長さの文字のシーケンスです。各文字列には設定された長さがあり(デフォルトは255)、次の例は次のとおりです。
var
アドレス:文字列;
コード:文字列[50];
アドレスは255の長さの文字列で、コードの最大長は50です。
従来のパスカルストリングの長さは255を超えることはできません。
文字列連結操作「+」を使用して、文字列を連結することができます。
結果:= string1+string2;
2。デルファイの長い弦
従来のパスカルショートストリングをサポートすることに加えて、デルフィは長い弦もサポートしています。長いキャラクターはansistringと呼ばれます。長い文字列はメモリを動的に割り当てます。つまり、文字列に必要なメモリは、文字列を使用する場合にのみ割り当てられるため、長さは制限されません。 Delphiでは、string1:stringとしてタイプ説明として使用する場合、string1は、コンパイラ内の$ hスイッチの設定に応じて、短い文字列または長い文字列のいずれかです。デフォルト値は$ H+で、ANSI Long文字列を表します。長い弦はnullで終わります。つまり、長い弦はC言語のnull-end文字列と完全に互換性があります。
文字列の最大長は、setlength関数を介して設定できます。
setLength(String1,100); Trimleft、TrimRight、Trim機能を使用して、それぞれ文字列の最初、端、端を排除します。
3。 cと同様の文字配列
0で始まるアレイを使用して、nullで終わる文字列を保存できます。次の定義:
var
名前:Array [0..50] ofChar;
4。 PCHAR POINTER
DelphiのExendedSyntaxが設定されている場合(デフォルト)、0で始まる文字配列は、0から始まる文字配列名が文字配列の最初の文字を指すポインターであるため、ポインターPCHEが文字を指すポインターと完全に互換性があります。 。文字列をPCHARポインターに直接支払うことができます。例えば:
var
P:PCHAR;
始める
p:= 'helloworld';
終わり;
このように、Pは文字列「Helloworld」を保存し、nullで終わるメモリの一部を指します。
多くのWindowsアプリケーションプログラムインターフェイスAPI関数がパラメーターとしてPCHATyタイプを必要とします。 PCHARポインターを使用する場合、最初にGETMEM(VARP:POINTER; SIZE:INTEGER)関数を使用して、メモリの割り当てを適用します。メモリをリリースします。例えば:
varwindir、sysdir:Pchar;
始める
getMem(Windir、256); {ポインターにメモリを割り当てる}
getWindowsDirectory(Windir、128); {WindowsインストールディレクトリをWindirに配置}
showmessage( 'windowsdirectoryis'+windir); {結果を表示}
終わり;
2:文字列変換
上記では、デルファイの4種類の文字列の定義と使用を紹介します。さまざまな関数には文字列パラメータータイプの要件が異なるため、文字列型変換が必要です。
1。 strpasを使用して、nullで終了する文字列をパスカルショートストリングに変換できます。 strpcopyは反対の変換を完了します。
2。長い弦はnullで終わるので、キャストで長い弦をプチャー型に変換できます。使用法は次のとおりです。PCHAR(s)、Sは長い文字列です。キャスティングは、長い文字列の最初の文字へのポインターを返し、尖った文字列はnullで終わります。例えば:
var
キャプション、メッセージ:文字列;
キャプション:= 'HelloWorld!';
mssage:= 'thisisatestoflongstring';
MessageBox(0、PCHAR(メッセージ)、PCHA(キャプション)、MB_OK);
概要:Delphiで文字列を使用する場合、混乱を避けるために、文字列の種類について常に明確にする必要があります。文字列を理解するときは、文字列をポインターとメモリの割り当てにリンクして、理解を高める必要があります。