■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#6725-0オブジェクトをコピーする方法だいち2000-01-20(木) 20:49
     #6726-0RE#6725:オブジェクトをコピーする方法藤代千尋2000-01-20(木) 21:23
     #6727-0RE#6725:オブジェクトをコピーする方法魔界の仮面弁士2000-01-20(木) 21:33
#6725-0
オブジェクトをコピーする方法
あるフォームから(クラスのインスタンスである)オブジェクトを編集用のフォームへ引き渡し、
そこでいろいろデータをいじった後、「更新」ボタンが押されたら元のフォームへオブジェクトを
返すという処理をやりたいと思っています。

ところが、オブジェクトを引数として渡してやりますと、Byvalを使って値渡しにしてやっても
もとのオブジェクトのデータが変更されてしまいます。
#たぶんポインタを渡しているだけでしょうから、当然といえば当然ですが…(^^;)

そこで、オブジェクトのコピーを取りたいのですが、すべてのパラメータをいちいち代入していくという
原始的な方法以外になにか良い方法はないものでしょうか?

よろしくお願いいたします。

バージョンは、VB6.0(SP3)です。
#6726-0
RE#6725:オブジェクトをコピーする方法
> そこで、オブジェクトのコピーを取りたいのですが、すべてのパラメータをいちいち代入していくという
> 原始的な方法以外になにか良い方法はないものでしょうか?

私もこの間、この問題にぶつかりました。
しかし、方法が思いつかず(メモリコピーは危険)、原始的な方法を使いました。
ただ、メソッドとしてカプセル化したので、なかなかいいんじゃないかと思っています。

  '' ダイアログボックスのプロパティにクラスをコピー。
  ''  CopyTo は、内部で、各プロパティの値をコピーする。
  cEmp.CopyTo dlg.Emp
 ・
 ・
  '' OK ボタンが押されていれば、ダイアログボックスのクラスを取得。
  If dlg.PushOK Then
    dlg.Emp.CopyTo cEmp
#6727-0
RE#6725:オブジェクトをコピーする方法
# 回答ではないですが…。

> ところが、オブジェクトを引数として渡してやりますと、Byvalを使って値渡しにしてやっても
> もとのオブジェクトのデータが変更されてしまいます。
> #たぶんポインタを渡しているだけでしょうから、当然といえば当然ですが…(^^;)

ByVal xxx As Objectと、ByRef xxx As Object は、若干意味が変わります。
重要な部分なので、Microsoft サポート技術情報で再確認しておいた方がよいと思います。

  文書番号: J042199 
  [VB] ByVal で渡されたオブジェクトのプロパティを編集する方法
このページと関連する記事:
#39723-0オブジェクトの引数渡しの違い2001-03-02(金) 14:24
#2221-2オブジェクト型のプロパティでオブジェクトの開放2001-11-29(木) 09:01
#150-0オブジェクトを引数で渡したいのですが2002-02-19(火) 15:08
#27167-0VB6でフォルダコピーしたいのですが2000-08-02(水) 18:18
#10309-0オブジェクトの参照について1999-11-25(木) 09:49
#24382-0クラスの参照について2000-06-27(火) 18:28
#18441-0フォームに描かれた線2001-10-25(木) 11:05
#10849-0Nullの使い方?2000-08-24(木) 17:19
#20059-0特定の拡張子のファイルのみコピーする方法2002-03-06(水) 09:30
#28024-0MediaPlayerオブジェクトについて2000-08-16(水) 12:05
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)