From: cuzic Date: 2006-03-28T07:01:32+09:00 Subject: [ruby-list:41964] Re: WIN32OLE#[]とWIN32OLE#[]=の変更 cuzic です。 [],[]= の仕様を変更するのには賛成です。 なんとなく、以前からそうあってくれた方がいいな、と思っておりました。 On Sat, 25 Mar 2006 21:59:24 +0900 Masaki Suketa wrote: > 助田です。 > > Win32OLEユーザーの方への質問です。 > > Win32OLEで、今までより、若干、省略した書き方ができる代わりに、 > Ruby 1.9以降でWIN32OLE#[] と WIN32OLE#[]= の仕様を大幅に変更しようか > どうしようか迷っています。 > Ruby 1.8は変更するつもりは無いです。 > > この2つのメソッドを使ってらっしゃる方はどのくらいいらっしゃる > でしょうか? > > 具体的には、プロパティを取得したり設定したりするときに []や[]= > を使っている場合、動かなくなります。 > ([]の中ではプロパティを指定できなくなる。) > > 例えば、 > > excel = WIN32OLE.new("Excel.Application") > excel['Visible'] = true > > は動かなくなり > > excel = WIN32OLE.new("Excel.Application") > excel.Visible = true > > と書く必要があります。 > 他にも > > installer = WIN32OLE.new("WindowsInstaller.Installer") > record = installer.CreateRecord(2) > record ["StringData", 1] = 'dddd' > > も駄目で > > installer = WIN32OLE.new("WindowsInstaller.Installer") > record = installer.CreateRecord(2) > record.setproperty("StringData", 1, 'dddd') > > と書く必要があります。 > > 代わりに、Excelでは > > worksheet.cells[1,2] = 10 > > と書けたり、他にも > > sh = WIN32OLE.new("WScript.Shell") > env = sh.Environment("User") > p env["FOO"] > env["FOO"] = "BARBAZ" > > と書けたり > > ado = WIN32OLE.new("ADODB.Connection") > ado.Open("...") > rs = ado.Execute("SELECT * from TABLE01") > while !rs.EOF > puts rs.Fields.Item("id").value > puts rs.Fields("id").value > puts rs["id"].value # ココがポイント > rs.MoveNext > end > > と書いたりできるようになります。 > > とりあえず、1.9にコミットしてみようかとも思ったのですが > その前に使ってくださってる方の意見も聞いてみたいので > メールを出しました。 > > 助田雅紀 > -- cuzic プログラミングは素晴らしい http://www.cuzic.com/