2017-12-06 15 views
1

大きなタイプの動的配列aArrayを定義します。そして今、2番目の配列を持っていたいbArrayaArrayに特定の領域をマーキングすることなく、TByteArray型から大きな配列の一部として配列型を取得する方法はありますか?

type 
    TByteArray = array of Byte; 

implementation 

procedure SomeCode; 
var 
    aArray : TByteArray; 
    bArray : TByteArray; 
begin 
    setlength(aArray, 30); 
    aArray[4] := 12; 
    // here want to have bArray to hold 20 Bytes starting from Byte 5 in aArray 
    if bArray[0] = aArray[4] then begin 
    writeln('All OK'); 
    end; 

end; 
+0

質問を編集してこれを行う必要がある理由を説明すると、あなたの*実際のニーズに一層合った回答が得られるかもしれません。 –

+0

これはまた、使用しているコンパイラと言語が分からないということに少し戸惑ってしまいます。それはデルファイですか?それはFPCですか?あなたは両方の下でコンパイルするコードを書いていますか?または、質問の視聴者をもっと引き付けるためにDelphiタグを追加するだけですか? @Tom Brunberg。 –

+0

私はこれを行い、異なる意味でaArrayのデータセクションにアクセスしたいと思います。これにより、生のデータチャンクのこのセクションにエレガントなアクセスが可能になります。それは、この位置計算とオフセット+カウンタなどの明確なコードを書くのに役立ちます。そして、コピー操作を保存します。 – Neptuntriton

答えて

4

これはできません。動的配列には、配列の最初の要素の直前に配置されたメタデータが含まれます。これは、最初の要素が別の配列の真ん中にある動的配列が必要な場合には、互換性がありません。

おそらく、サブアレイの最初の要素へのポインタを使用して問題を解決する必要があります。

+0

このような明確な答えをいただきありがとうございます。 – Neptuntriton

+0

@David: "サブ配列の最初の要素へのポインタ"とそれに関連する長さ。 –

関連する問題