From: Masahiro Kitajima Date: 2004-06-16T16:10:09+09:00 Subject: [ruby-dev:23694] WIN32OLEの日本語エラーメッセージが切り詰められる かとんぼです。  WIN32OLEの日本語エラーメッセージが切り詰められます。 >ruby -v -rwin32ole -e "WIN32OLE.new('')" #=> ruby 1.8.1 (2003-12-25) [i386-mswin32] -e:1:in `initialize': Unknown OLE server : `' (WIN32OLERuntimeError) HRESULT error code:0x800401f3 クラス from -e:1:in `new' from -e:1 $ ruby -v -rwin32ole -e "WIN32OLE.new('')" #=> ruby 1.8.1 (2003-12-25) [i386-cygwin] -e:1:in `initialize': Unknown OLE server : `' (WIN32OLERuntimeError) HRESULT error code:0x800401f3 クラス from -e:1:in `new' from -e:1  オリジナルに等価では無いですが、cygwin に _mbsdec() がありませ んし、メッセージが '.' で終わるとも限らないようなので、このくらい でいいのではないかと思います。 --- win32ole.c.org Thu May 20 11:38:54 2004 +++ win32ole.c Wed Jun 09 14:44:46 2004 @@ -504,6 +504,9 @@ /* remove dots and CRs/LFs */ - while (dwCount > 0 && - (p_msg[dwCount-1] < ' ' || p_msg[dwCount-1] == '.')) { - p_msg[--dwCount] = '\0'; + char *cur = p_msg; + char *term = 0; + while ((cur = strchr(cur, '\r')) != NULL) { + term = cur; + cur++; } + if (term) *term = '\0'; if (p_msg[0] != '\0') { @@ -512,2 +515,3 @@ } + LocalFree(p_msg); return msg; (現時点のCVS最新版スナップショットに適用できることを確認しました) >ruby -v -rext/win32ole/win32ole -e "WIN32OLE.new('')" #=> ruby 1.8.2 (2004-05-27) [i386-mswin32] -e:1:in `initialize': Unknown OLE server : `' (WIN32OLERuntimeError) HRESULT error code:0x800401f3 クラス文字列が無効です from -e:1:in `new' from -e:1 -- 北島雅博(かとんぼ)