AFAIK前記レコードが一般的な構造になっている場合、レコードメンバーに値を直接割り当てることはできません。持っ例えばDelphi XEでジェネリックスのレコードメンバーを効率的に変更
、:
var
...
temp: TMyRec;
...
begin
...
temp:=myList[999];
temp.Width:=1000;
myList[999]:=temp;
...
end;
醜い、ゆっくりと、しかし作品:
type
TMyRec = record
Width: integer;
Height: integer;
end;
var
myList: TList<TMyRec>;
...
myList[888].Width:=1000; //ERROR here: Left side cannot be assigned.
...
は今まで、私はこれを克服するために、一時的な変数を使用していました。しかし、今、私はTMyRec
に動的配列を追加したい:
type
TMyRec = record
Width: integer;
Height: integer;
Points: array or TPoint;
end;
を...または一時変数に前後にコピーそれほど大きくなったことができ、他のデータ構造は、実現可能な選択肢ではありません。
質問:このレコードが一時的なvarにコピーする必要のない一般的な構造になっている場合、レコードのメンバーを変更するにはどうすればよいですか?
フィードバック対象製品
は、あなたが '' PMyRec'がTMyRec' 'へのポインタである' TListの 'としてmyList'を宣言することができます書くことができますか?この方法では、コピーせずに直接データを使用できます。 –
teran
@teranこれは、リストとは別のストレージを管理する必要があるため、不便です。私はTList <>のように動作する自分のクラスを作成しましたが、i番目の要素へのポインタを返すプロパティを持っています。それは確かに動作しますが、明らかに組み込まれていません。 –