From: Masaki Suketa Date: 2006-03-25T21:59:24+09:00 Subject: [ruby-list:41956] WIN32OLE#[]とWIN32OLE#[]=の変更 助田です。 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にコミットしてみようかとも思ったのですが その前に使ってくださってる方の意見も聞いてみたいので メールを出しました。 助田雅紀