ページ 11

文字化けしてしまう

Posted: 2008年2月22日(金) 15:09
by M.S.
SPIRIT さんのサイトの WinTips を参考にしたのですが、
取得したドライブ名をエディットボックスに表示させたいのですが、
ドライブ名が文字化けしてしまいます。
どうすれば文字化けせずに表示されるのでしょうか?
AB: 5.00.00 (CP3)

Re: 文字化けしてしまう

Posted: 2008年2月22日(金) 20:25
by 7
> ドライブ名が文字化けしてしまいます。
> どうすれば文字化けせずに表示されるのでしょうか?
Ver.5だとwsprintf()の使い方が厳密になった感じでしょうか。

単一文字なので、%sではなく%cを使うべきです。 追記。

wsprintf()%sで文字列を突っ込んでみても文字化けするので、どっか調子悪いんでしょうか。(←原因分からん)

Posted: 2008年2月23日(土) 10:09
by konisi
識別子「UNICODE」が定義されていて、かつEditBoxがSJIS文字用になっていたら
文字化けするかもしれないと思うのですが、
そこらへんはどうなっていますか?←Ver5で試してない

Posted: 2008年2月23日(土) 16:28
by 7
Ver.4のDeclare文を引っ張ってきてwsprintf()を使ってみても文字化けしますし、以下のようなコードでも3Bという文字が混入します。

コード: 全て選択

Dim buf[256] As SByte ' SByteにしてみてもダメ
	wsprintf(buf,"%s","")

Re: 文字化けしてしまう

Posted: 2008年2月24日(日) 14:52
by M.S.
> > ドライブ名が文字化けしてしまいます。
> > どうすれば文字化けせずに表示されるのでしょうか?
> Ver.5だとwsprintf()の使い方が厳密になった感じでしょうか。
>
> 単一文字なので、%sではなく%cを使うべきです。
> >
> 追記。
>
> wsprintf()%sで文字列を突っ込んでみても文字化けするので、どっか調子悪いんでしょうか。(←原因分からん)


7 さんのコードでちゃんと動くようになりました。
ありがとうございます。
AB4.24では僕が書いたコードでちゃんと動きました。
今までAB4.24 の時と同じコードを書いていて、
文字化けしたことがなかったのですが…

Posted: 2008年2月24日(日) 16:27
by イグトランス
Stringの内部構造が変化したため、直接Stringをwsprintfなどに渡せなくなってしまいました。
StrPtr関数を使うとうまくいきます。
wsprintf(SetDrv, "Drive %s", StrPtr(Left$(Drive, 1)))