- 156 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 10:40:14 ]
- くだすれだし、もう少し優しい言い方でも良いかなぁ。とおもいつつ。
Length (組み込み)関数が使えるのは「長い文字列型 (AnsiString, WideString, UnicodeString)」 と 「動的配列 (array of 〜)」です。 PByteArray の定義上の型は 「TByteArray へのポインタ」で TByteArray は Byte 型の「静的」配列となっています。 この TByteArray型は動的配列が Delphi 言語に導入される前に使われていた、長さ不定の Byte 配列を 参照するための便宜的な型です。範囲チェックをオフにすることで任意のインデックスの場所を参照できました。 もちろん配列の領域確保と正しい場所へのアクセスはプログラム自身が保証する必要があります 現在は動的配列が導入されたため、領域確保に関しては動的配列を使えば解決できます。 Length または High を使えば実行時に配列の大きさを知ることもできます。 PByteArray 型は、キャストすることによって任意のポインタを Byte の配列として扱えるため 動的配列が導入された後もよく使われます。 PByteArray 型単体では、単なるポインタなのでコンパイラも(回答者も)それ以上のことは何も判りません。 PByteArray 型の指す実体が、何によって確保されているかによって、その実体の大きさを取得する方法は異なります。 PByteArray 型として格納されているポインタが不定なのであれば、そのポインタの指す「何か」の大きさを 知る方法は、まずありません。設計から見直しましょう。
|

|