掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
インスタンスをコピーするには? (ID:26002)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Delphiの場合 Assignと表現します。 例えば例を挙げるとTFontのAssignはこのようになっています。 TFont = class(TGraphicsObject) …省略… procedure Assign(Source: TPersistent); override; procedure TFont.Assign(Source: TPersistent); begin if Source is TFont then begin …省略…ここで全部のTFontのメンバーなどをコピーする処理 Exit; end; inherited Assign(Source); end; 宣言部でoverride指令は行ってください。これは TFontや、ほとんどのVCLクラスはTPersistentを継承していまして AssignはそのTPersistentで仮想宣言されているからです。 で、TFontを継承したTNeoFontを作りたい場合 次の用に実装するのがいいでしょう。 TNeoFont = class(TFont) …省略… FNewField: Integer; procedure Assign(Source: TPersistent); override; procedure TNeoFont.Assign(Source: TPersistent); begin if Source is TNeoFont then begin FNewField := TNeoFont(Source).FNewField; end; inherited Assign(Source); end; これで、 NeoFont1 := TNeoFont.Create; NeoFont2 := TNeoFont.Create; NeoFont1.Assign(NeoFont2); NeoFont1.Free; NeoFont2.Free; とすることで、Fontインスタンスがコピーできます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.