[#41876] mswin32版のライセンスについて — TOBY <toby@...>

はじめまして、rubyを愛してやまないTOBYと申します。

13 messages 2006/03/05

[#41886] "win32/registry" と "dl/win32" の相性について — take_tk <ggb03124@...>

たけ(tk)です

14 messages 2006/03/07
[#41887] Re: "win32/registry" と "dl/win32" の相性について — nobu@... 2006/03/07

なかだです。

[#41888] Re: "win32/registry" と "dl/win32" の相性について — take_tk <ggb03124@...> 2006/03/07

たけ(tk)です

[#41933] Cygwin での #!/bin/env ruby -Ks — "Hideo Konami" <konami@...>

小波です。Cygwin で Ruby のスクリプトをいつも書いています。

14 messages 2006/03/22

[ruby-list:41894] Re: "win32/registry" と "dl/win32" の相性について

From: take_tk <ggb03124@...>
Date: 2006-03-08 02:09:16 UTC
List: ruby-list #41894
たけ(tk)です

[ruby-list:41888] Re: "win32/registry"  と "dl/win32"  の相性について にて
take_tk <ggb03124@nifty.com> さん曰く:

> このようなエラーが出た時は、
> 「require "win32/registry"」の《前に》「require "dl/win32"」を入れる、
> 
> という対策で、よろしいでしょうか?
> 
> 名前の衝突(?)というかクラスの中身のすり替わり(?)の問題は残るような
> 気がするので、多少心配ですが、
> その方針でしばらく様子を見てみます。

駄目みたいです。

"dl/win32" の Win32API を前提とするメソッドで、
no implicit conversion from nil to integer (TypeError)
というエラーになる。



----
require "dl/win32"
##require "Win32API"

MessageBox = Win32API.new( 'user32' , 'MessageBox' , %w(N P P N) , "N" )
MessageBox_ReturnHash = { 1=>:ok, 2=>:cancel, 3=>:abort, 4=>:retry, 5=>:ignore, 6=>:yes, 7=>:no, 10=>:redo, 11=>:continue}

def message_box( handle,text,caption,type=0 )
  MessageBox.call( handle , text , caption ,type )
end

def say( msg , caption='' , type=0 )  #   OK
  MessageBox_ReturnHash[ret=message_box( 0, msg , caption , type )]||ret
end

require "win32/registry"

def ext_to_cmd(ext)
  doc = Win32::Registry.open(Win32::Registry::HKEY_CLASSES_ROOT, ext) { |reg| reg.read(nil)}[1]
  cmd = Win32::Registry.open(Win32::Registry::HKEY_CLASSES_ROOT, "#{doc}\\shell\\open\\command") { |reg| reg.read(nil)}[1]
rescue Win32::Registry::Error
  nil
end

require "dl/win32"  # ←影響なし。

p ext_to_cmd(".doc") # これはOK。

say("test")          # ここでエラー。"dl/win32" を前提としたメソッド。
##no implicit conversion from nil to integer (TypeError)
##  G:\apollo\tkUtils\1.rb:7:in `call'
##  G:\apollo\tkUtils\1.rb:7:in `message_box'
##  G:\apollo\tkUtils\1.rb:11:in `say'
----

Take_tk = KUMAGAI Hidetake
たけ(tk)=熊谷秀武


In This Thread