2009-08-26 20 views

答えて

5

削除は「コンパイラマジック」機能です。コンパイラは、基本データ型に関する知識を使用して、操作を適切に処理します。ほとんどの配列では、コード内に記述した情報を、実際に必要なオフセットとバイト数に変換して、代わりに_Deleteアセンブリルーチンに渡すことができます。 Alexanderが指摘したように、WideStringでは、特別な_WStrDeleteルーチンがあります。

最終行:配列に文字列を渡すと、それがコンパイルされた場合、うまく動作するはずです。

+0

haha​​、私はその答えが好きです。特に、関数のオーバーロードされたバージョンがない場合、DelphiはStringからWideStringへの暗黙の変換を行います... –

5

削除、挿入、長さなどの内部RTL関数は、ANSIとワイド文字列の両方で機能します。

たとえば、WideStringでのDelete呼び出しは、WStrDelete呼び出し(System.pasを参照)に変換されます。

+0

あなたはそれについて確かですか?デルファイ2006でそれは単なるアセンブラ関数です... –

+1

はい、私はそれについてかなり確信しています - 今すぐD2006でそれをチェックしてください。 String(AnsiString)の削除はLStrDelete呼び出しに変換され、WideStringのDeleteはWStrDelete呼び出し(CPUビュー参照)に変換されます。 – Alex

+0

ええ、さて、私はその間にも気づきましたが、とにかく感謝します。 –