掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
インスタンスをコピーするには? (ID:25999)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あまり意味を理解していないかも知れませんが,あるクラス型のインスタンスを Createで生成すれば,他のそのクラスのオブジェクトには単に代入式( := )で インスタンスもコピーされます. これは,既にDelphiで用意されたT....というオブジェクトを変数として使用する 場合と同じです. 例 Labele1 : TLabel; (これは Label1:=TLabel.Create; としなくても利用できる) 以下の例ではTMyClassのインスタンスである ValueGroup1を生成して,同じ TMyClassのValueGropp2に代入しています. ただし,独立してValueGruup1とValueGruup2を使用する場合は,どちらも Createする必要があります. そのような場合,インスタンスのコピーを行うには,Assignメソッドを 実装します(そのクラスのオブジェクト類を代入するコードを書く), TMyClass=class(TObject) protected FNum : Integer; FMoji : String; public property Num : Integer read FNum write FNum; property Moji : String read FMoji write FMoji; end; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private 宣言 } public { Public 宣言 } ValueGroup1 : TMyClass; ValueGroup2 : TMyClass; end; var Form1: TForm1; implementation uses DebugWndUnit; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ValueGroup1:=TMyClass.Create; ValueGroup1.Num:=100; ValueGroup1.Moji:='Delphi'; ValueGroup2:=ValueGroup1; ShowMessage(IntToStr(ValueGroup2.Num)+' '+ValueGroup2.Moji); end; // Createして使い終わったら解放 procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ValueGroup1.Free; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.