トップ回答者
Strconvの戻り値がおかしくて,とても困っています。

質問
-
VB2010Expressで新規にウィンドウズフォームアプリケーション「WindowsApplication1」を作成します。
プロジェクトを【保存していない】状態で,
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(StrConv("コンピューター", VbStrConv.Katakana))
End Subとします。
するとメッセージボックスは「コンピ」と表示してしまうのです。
これはいったいどういう現象なのでしょうか?
プロジェクトを保存した場合は正しく「コンピューター」と表示されます。
環境は,
VB2010Express,Windows 7 Home Premium 32bitです。
一見,プロジェクトを保存すれば実害はないように思いますが,「Orchis」というランチャーソフトからコンパイル済みのexe起動した場合にも同様の症状が発生してしまい,大変困っております。
どなたか,解決策をご存知の方がいらっしゃいましたら,お教えください。
回答
-
> まったく同じ機種ではありませんが,同じ条件(他のPCでWindows7+VB2010Exp+「Orchis」)のPCでは全く問題は発生しておりません。
> 「Orchis」が問題という可能性は低いのではと考えております。最初の質問を読むと
> 一見,プロジェクトを保存すれば実害はないように思いますが,「Orchis」というランチャーソフトからコンパイル済みのexe起動した場合にも同様の症状が発生してしまい,大変困っております。
と書かれておりますよね。これは直接起動した場合は問題ないが、ランチャーから起動した場合は現象が発生するというように読めます。
もしそうであれば、他のマシンでは問題なくとも、現象の発生するマシンでは Orchis に対して何らかのプロセスが干渉を起こしているのかも知れません。正常に動作するマシンとの環境の違いを、インストールされているアプリや常駐プロセスの違いまで、詳しく調べてみるのも一つの手だと思います。
ひらぽん http://d.hatena.ne.jp/hilapon/- 回答としてマーク 山本春海 2010年9月16日 5:10
すべての返信
-
XP SP3/ VS2010 Pro で試してみました。こちらの環境では問題なく「コンピューター」と表示されます。
ロケールの問題なのかなぁ、OS も VS も日本語版ですよね?
試しに以下のようにロケールID を指定して実行するとどうなるでしょう。Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox(StrConv("コンピューター", VbStrConv.Katakana, 1041)) ' 日本語を指定 End Sub
ちなみに 「ロケールID 一覧」 はこちら。
ひらぽん http://d.hatena.ne.jp/hilapon/- 編集済み ひらぽんModerator 2010年9月16日 2:48 少し修正
-
ご提示されたコードはカタカナをカタカナに変換しているので意味がないものになっています。実際に動作されているコードはご提示されたコードとは違うと思うのですが、実際に不具合が再現する最低限のコードをご提示していただけますか?
ちなみに私のところで以下を実行してみましたが、問題なく「コンピューター」と表示されました。Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox(StrConv("こんぴゅーたー", VbStrConv.Katakana)) End Sub
また、MsgBoxの問題なのか、StrConvの問題なのか切り分けた方が良いと思います。デバッグ実行で直接StrConvの戻り値を確かめてみて下さい。
あと、何らかのプロジェクトの設定などが影響しているかもしれませんので、新規にプロジェクトを作成し、私が上に掲載したコードをそのまま実行してみて下さい。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
コメントありがとうございます。
>実際に不具合が再現する最低限のコードをご提示していただけますか?
投稿文にあるコードが不具合の発生するコードです。
ただし,私の環境のみで,他のPC2台では再現できませんでした。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(StrConv("こんぴゅーたー", VbStrConv.Katakana))
End Subを試した結果,やはり「コンピ」と表示されました。
また,プロジェクトを保存していない状態なため,デバッグ中に値を参照することができませんでした。
代わりに,
Dim strWork As String = StrConv("こんぴゅーたー", VbStrConv.Katakana)
IO.File.WriteAllText("C:\a.txt", strWork, System.Text.Encoding.GetEncoding("Shift_JIS"))として,a.txtをエディタで見てみたところ,同様に「コンピ」となっていました。
ところが,バイナリエディタで見たことろ,「83 52 83 93 83 73 00」となっており,最後にNULL値が含まれているようです。
OS側に何か問題があるのでしょうか?
-
> 一見,プロジェクトを保存すれば実害はないように思いますが,「Orchis」というランチャーソフトからコンパイル済みのexe起動した場合にも同様の症状が発生してしまい,大変困っております。
「Orchis」というランチャーソフトがどうも気になります。
原因を明確にするためにも、まず「Orchis」なるソフトを停止、もしくはインストールされてない環境で同様の操作をするとどうなるか試してみてはいかがでしょうか?
また VMWare 等でも仮想環境を構築できますので、仮想環境に Windows 7 Home Premium 32bit と VB2010Express をインストールして動作を試した後、Orchis をインストールして試してみるというのはいかがでしょうか?
# ちなみに Windows Virtual PC は使ったことないので判りません。
ひらぽん http://d.hatena.ne.jp/hilapon/ -
> まったく同じ機種ではありませんが,同じ条件(他のPCでWindows7+VB2010Exp+「Orchis」)のPCでは全く問題は発生しておりません。
> 「Orchis」が問題という可能性は低いのではと考えております。最初の質問を読むと
> 一見,プロジェクトを保存すれば実害はないように思いますが,「Orchis」というランチャーソフトからコンパイル済みのexe起動した場合にも同様の症状が発生してしまい,大変困っております。
と書かれておりますよね。これは直接起動した場合は問題ないが、ランチャーから起動した場合は現象が発生するというように読めます。
もしそうであれば、他のマシンでは問題なくとも、現象の発生するマシンでは Orchis に対して何らかのプロセスが干渉を起こしているのかも知れません。正常に動作するマシンとの環境の違いを、インストールされているアプリや常駐プロセスの違いまで、詳しく調べてみるのも一つの手だと思います。
ひらぽん http://d.hatena.ne.jp/hilapon/- 回答としてマーク 山本春海 2010年9月16日 5:10
-
コメントありがとうございます。
>これは直接起動した場合は問題ないが、ランチャーから起動した場合は現象が発生するというように読めます。
おっしゃる通りです。これだけであれば,「Orchis」を疑うのですが,VB2010単体でも発生するので,私としては「Orchis」を除外してもよいものと考えております。
ちなみに,「Orchis」を終了(プロセスに無い状態)しても,同様の現象は発生します。
>もしそうであれば、他のマシンでは問題なくとも、現象の発生するマシンでは Orchis に対して何らかのプロセスが干渉を起こしているのかも知れません。正常に動作するマシンと環境の違いを、インストールされているアプリや常駐プロセスの違 い等、詳しく調べてみるのも一つの手だと思います。
そうですね。大変そうですが,調べてみます。
-
若干の進展がありました。
「VB2010単体でも発生する」と報告していましたが,不覚にもVB2010そのものを「Orchis」から起動しておりました。
VB2010をスタートメニューから起動した場合は,問題は発生いたしません。
これにより,「Orchis」が怪しいという線が濃厚ですが,他のPCでは「Orchis」から起動しても問題はありませんでした。
もしも,「Orchis」に興味があるかたで本現象の原因がわかるようなことがあれば,お教えいただければ幸いです。根本的な解決にはいたっておりませんが,困っている度合いは若干下がりました。
みなさん,お騒がせして申し訳ございませんでした。いろいろとありがとうございました。