■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#8179-0RE#8176:なぜstr$を使うのですか?いなちゃん2000-03-06(月) 10:11
     #8181-0RE#8179:なぜstr$を使うのですか?若葉マーク2000-03-06(月) 10:22
     #8182-0RE#8179:なぜstr$を使うのですか?ゆう(U)2000-03-06(月) 10:50
#8179-0
RE#8176:なぜstr$を使うのですか?
> CInt関数で変換した値を、str$で変換する理由がわかりません。
> 「x = CInt("&h" & strHex)」とするのとの違いをどなたか教えてください。
> 
> > strHex = "41"
> > x = Trim$(Str$(CInt("&h" & strHex)))
> > 'x="65" です。
> > 
「x」はString型、「CInt("&h" & strHex)」はInteger型、Integer型のものをString型にセットするために
String型への変換をしているのです。
VBではこのような型変換は自動(かってに)で行われますが、型が違うものにセットする場合は
明示的に型変換を行うようにした方がいいです。
行わないことにより、変なバグが発生する場合がありますよ。
#8181-0
RE#8179:なぜstr$を使うのですか?
> 「x」はString型、「CInt("&h" & strHex)」はInteger型、Integer型のものをString型にセットするために
> String型への変換をしているのです。
> VBではこのような型変換は自動(かってに)で行われますが、型が違うものにセットする場合は
> 明示的に型変換を行うようにした方がいいです。
> 行わないことにより、変なバグが発生する場合がありますよ。

おおっ、なるほど!
型が違ったんですね。
すげぇすっきりしました。
いなちゃんさん、どうもありがとうございます。
明示的に型変換を行うよう心掛けたいと思います。
#8182-0
RE#8179:なぜstr$を使うのですか?
> 明示的に型変換を行うようにした方がいいです。
> 行わないことにより、変なバグが発生する場合がありますよ。
質問に対する回答は出ていますが・・・

この様な型変換で注意しないといけないことがもう一つあります。

それは扱うデータの範囲で型変換の関数も意識しないといけないと
言うことです。

イミディエイト ウインドウで・・・
? CInt("&H" & "8000")
と
? CLng("&H" & "8000")
では結果が異なります。

? Val("&H" & "8000")
と
? Val("&H" & "8000" & "&")
でも結果は異なります。

まぁこれは
? 1000 * 1000
と
? 1000& * 1000
にも言えることですが、扱えるデータの範囲などにも
十分注意が必要です。


最後に(ちゃちゃになりますが)・・・
? Trim$(Str$(CInt("&h" & strHex)))
は
? CStr(CInt("&H" & "41"))
? CStr(CLng("&H" & "41"))
の方が良いと思います。

Str$関数で+符号分のスペース(" 65")が発生したので
Trim$でそのスペースを切り取っているだけですので、
最初から+符号の空白を発生させない型変換関数を
使用してしまえばTrim$関数の必要は無くなります。

strHexにスペースが来た場合は"0"として扱うなら
? CStr(CLng("&H0" & strHex))
の様にしてもOKです。

●どの様な型で・どんな値を扱うかは常に意識して
 プログラムするとバグの発生を減らせます。
このページと関連する記事:
#40694-0CIntとVal、CStrとStr2001-03-23(金) 09:24
#10275-032ビット2000-05-10(水) 15:02
#2609-216進を文字列に変換するには?2002-08-29(木) 11:03
#16054-0TrimとTrim$の違い2001-05-11(金) 09:50
#6529-0マウスの座標を出すプログラム2000-03-09(木) 13:35
#14746-0Trim関数について2001-02-27(火) 13:05
#18812-0グリニッジ標準時を Format 関数で表示形式を整える2000-03-29(水) 21:30
#14323-0テキストボックスについて2001-02-04(日) 16:25
#8275-0Format関数について2000-03-07(火) 14:54
#41233-0EM_GETSELのバグ?回避について2001-04-04(水) 00:11
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)