の配列の配列を比較し、私はこのように、単一の配列の配列として3×3のマトリクス表を宣言: メモリコピーとメモリは、Delphiでシングル
m_Table: array [0..2] of array [0..2] of Single;
今、私はメモリにしたいとの内容を比較します別のテーブルまたはメモリは、別のテーブルのテーブルコンテンツをコピーします。私はそれを行うネストループを作成できることを知っていますが、可能であれば、ループなしでそのジョブを実行したいと思います。
私の質問は、それは次のようにメモリをコピーしたり、比較することが正しいとされていますされていない場合
CompareMem(m_Table, other.m_Table, 9 * SizeOf(Single));
CopyMemory(m_Table, other.m_Table, 9 * SizeOf(Single));
、それを行うための正しい方法は何ですか?
副次的な質問として、9 * SizeOf(Single)の代わりにコピーする長さを取得するより良い方法があります。 SizeOf(m_Table ^)?
ありがとうございます。
として割り当てることができ、System.Math.Vectorsユニットから標準TMatrixタイプを使用する必要があり、私はそのようなタイプを持っている良いものがある疑い。私はそのようなタイプのすべての自分のルーチンをロールバックしたことを知っています。 –
回答の強化されたレコードに関するいくつかの問題。メソッドの主体を変更するメソッドを提示します。それはレコードの問題です。 constパラメタでこのようなメソッドを呼び出すと、意味エラーに繋がります。メモリが書き込み可能でない場合でも実行時エラーが発生します。レコードに変更メソッドを持たないでください。値を返す静的クラス関数を使用します。そして、equals演算子は等しくないと少し役に立たない。さらに、バイナリ比較は浮動小数点比較とは異なります。それは微妙ですが重要です。 –
さらに、コピーと塗りつぶしのメソッドを削除することができ、それらの代わりに普通の古い ':= '代入演算子を使用します。ゼロに設定したい場合は、その値で型付き定数を宣言し、代入を使用するのが最善の方法です。 –