作成したプログラムを友人に送ってみたところ、文字化けが起きたという報告があったんですが、作成している自分のマシンでは文字化けはおきません。
こういう場合はどういった原因が考えられるのでしょうか。
相手のパソコンにVB?JP.DLL(VB日本語化ランタイム)蛾入ってないと思います。
ありがとうございます。
聞いてみて、結果をまた書きます。
ずいぶん遅くなりましたが、報告いたします。
相手側のマシンにはDLLは入っています。
何台かのパソコンで試してみてDLLを入れることによって解決したのもあったんですが、解決しないマシンもあるのです。
ちなみにそのマシンはXPなのですが、文字化けする場所としない場所が決まっているのですが、何が問題なのかわかりません。
バージョン違いじゃないですか?
(VB6で作ったソフトの文字化けを防ぐにはVB6JP.DLLが必要、VB5のには、VB5JP.DLLが必要)
確かどのWindowsからか、VBランタイムは標準添付になったそうですけど、
日本語化DLLは入ってません。
> 文字化けする場所としない場所が決まっているのですが
まさに日本語化DLLがないときの症状です。
そのパソコンにclWindows(http://www.runan.net/)などのソフトを入れてみて、ソフトと同じバージョンの日本語化DLLが入っているかどうか、
(そして最新版かどうか)
確認してみてください。
多分サービスパックがあたってないんじゃないかな。
win98で作ってwinNTで実行すると、
標準で文字化けします。
98>2k
98>XP
も同様です
対策としてはフォントを指定してやります。
たとえばLabel1の内容が文字化けするのであれば、
デザイン時にフォントを一回ちがうのにして、
もう一度もどしてやれば表示されます。
追記ですが
なぜこんなことが起こるかといえば、
VBではコントロールを貼り付けて、
そのコントロールのフォントを変更しなかった場合、
フォントの情報は(プロパティバッグに)保存されません。
つまり、「デフォルトのフォントをつかってね」ってことになります。
これが問題で(いや英語環境なら問題じゃないんですが)
NT系ではそのデフォルトが英語フォントになっていて
それで表示しようとしてしまうためのようです。
まだ、確認はしてないんですが実は日本語だけが文字化けするわけではないんです。
フォームのロード時にフォントを指定してあげれば
上手く行くと思います。
自分の作っているソフトでは、
文字化け発生したことありませんので下記を試してみてください。
たとえばラベル1がある場合
Private Sub Form_Load()
Label1.FontName = "MS Pゴシック"
Label1.FontSize = 11
End Sub
こうやれば文字化けしないはずです。
もしコントロールが多数あってメンドクサイ!と言う人は、
フォーム上のコントロールを一気に変えてあげればOK!
Private Sub Form_Load()
Dim intIndex As Integer
For intIndex = 0 To Form1.Count - 1
With Form1(intIndex)
.FontName = "MS Pゴシック"
.FontSize = 11
End With
Next intIndex
End Sub
でもコントロールにFont等のプロパディが無いのも存在するので
そこは考えてください。
On Error Resume Nextで逃げるとか。
ツイート | ![]() |