たびたび。たびたび、質問させていただきます^^;
今作っているプログラム内にて、TTreeViewで項目操作を行っています。
あとで別の処理に使用したいため、ある位置のTTreeNodeのコピーを取っておきたいのです。
例えば、MotoNode: TTreeNode を CopyNode: TTreeNode に保存しておくということです。
このとき、保存という意味での記述方法は、
MotoNode := CopyNode; ではなく
CopyNode.Assign(MotoNode); でいいのでしょうか?
また、それぞれの意味は、
MotoNode := CopyNode; ===> MotoNodeはCopyNodeを表す
CopyNode.Assign(MotoNode); ===> MotoNodeと同じ情報をCopyNodeに別コピー
(Cとかで言う、参照渡しと値渡しみたいなもの?)
いまいち整理がついていません。
よろしくお願いします。
TTreeNode にかかわらず、Delphiのオブジェクトはポインタそのものと考えなければいけません。 したがって、以下の形は同じ実体を操作したことになります。
procedure Foo;
var
obj: TObj;
begin
obj := BaseObj;//名前は違っても同じもの
obj.propt := 1;//BaseObj.propt := 1と同じ
end;
しかし、以下の例はクローンです。
procedure Foo;
var
obj: TObj;
begin
//Assignはオブジェクトによって自分の意図とは違う働きをする場合があります。
obj := TObj.Create;
{同じ値でもobjとBaseObjは独立した個体であるといえます}
obj.propt := BaseObj.propt;
end;
ありがとうございます。
すっきりしました^^
しかし、私はまだまです^^;
ツイート | ![]() |