には、ワイド文字列に使用できるDeleteプロシージャの対応がありますか?または、コピーを使用して結果のWideStringを連結するだけでいいですか?widestringsのためのDelphi 2006 system.delete?
答えて
削除は「コンパイラマジック」機能です。コンパイラは、基本データ型に関する知識を使用して、操作を適切に処理します。ほとんどの配列では、コード内に記述した情報を、実際に必要なオフセットとバイト数に変換して、代わりに_Delete
アセンブリルーチンに渡すことができます。 Alexanderが指摘したように、WideStringでは、特別な_WStrDeleteルーチンがあります。
最終行:配列に文字列を渡すと、それがコンパイルされた場合、うまく動作するはずです。
削除、挿入、長さなどの内部RTL関数は、ANSIとワイド文字列の両方で機能します。
たとえば、WideStringでのDelete呼び出しは、WStrDelete呼び出し(System.pasを参照)に変換されます。
あなたはそれについて確かですか?デルファイ2006でそれは単なるアセンブラ関数です... –
はい、私はそれについてかなり確信しています - 今すぐD2006でそれをチェックしてください。 String(AnsiString)の削除はLStrDelete呼び出しに変換され、WideStringのDeleteはWStrDelete呼び出し(CPUビュー参照)に変換されます。 – Alex
ええ、さて、私はその間にも気づきましたが、とにかく感謝します。 –
haha、私はその答えが好きです。特に、関数のオーバーロードされたバージョンがない場合、DelphiはStringからWideStringへの暗黙の変換を行います... –