なひです. > From: 中村暁史 Nakamura Akifumi [mailto:BXQ04723 / nifty.ne.jp] > Sent: Tuesday, December 14, 1999 1:57 AM > Clipboardってデータのtypeを「登録」するわけですね。 > delphiのClipboardオブジェクトのソースの感じからして、適当な名前で > 登録をかけるか、登録済みの名前を流用するか、どっちかすれば > 任意のバイト列についてClipboardが扱えるんでわ。 大元の話をちゃんと把握してませんでしたが(すいません), 新たなフォーマット(中村暁史さん書かれたところのtype?)として Rubyのオブジェクトフォーマットを登録,ということなんでしたっけ? テキストフォーマット指定で取り出された時用にはinspectしたものを登録し, ビットマップ形式用にクラス図ビットマップを登録し(やりすぎ), Rubyフォーマット用にはMarshal#dump. > openの第一引数ってファイル名、つまりいわば「インスタンス名」ですよね。 > インスタンス名必須のIOがアリなら、クラス(type)名必須のIOもアリでも > 悪いと言える理由はないように思います。 m1 = MSWinClipboard::open( :CF_TEXT, "w" ) m1.write( anObject.inspect ) m1.close() m2 = MSWinClipboard::open( :CF_RUBYOBJECT, "w" ) m2.write( anObject.dump ) m2.close() m3 = MSWinClipboard::open( :CF_TEXT, "r" ) m3.read() m3.close() うーん,やっぱりなんか気持ち悪い. m = MSWinClipboard::open() m.set( { :CF_TEXT => anObject.inspect, :CF_RUBYOBJECT => anObject.dump } ) m.get( :CF_TEXT ) m.get( :CF_RUBYOBJECT ) m.close() あるいは MSWinClipboard::open() do |m| m.set( { :CF_TEXT => anObject.inspect, :CF_RUBYOBJECT => anObject.dump } ) m.get( :CF_TEXT ) m.get( :CF_RUBYOBJECT ) end が自然に見えるのは,染まってるのかな... > Clipboardにインスタンス名がない(つまり一個しかない)のは > 悲しいがそれはさておき。 複数あったらただの共有メモリかも. 共有メモリに「OSベースで標準化されたフォーマット」 があっても悪くないですが,次々に増えていく異種フォーマットは, 「OSベンダー」にはコントロールしきれないでしょう.:-)