
初歩的なことかも知れませんが教えてください。
VB6です。
通常テキストボックスの数字を比較する時、string型なので数字に変換して比較する必要があると思います。
が、数字に変換するのを忘れてそのまま比較した所おかしなところがありました。
VBでは自動的に数字として変換してくれるのかと思っていたのですが何故このような事になるのでしょうか?
<例>
1. int(100) > int(99) 結果:TRUE
2. cstr(99) cstr(98) 結果:TRUE
3. cstr(100) > cstr(99) 結果:FALSE
1番と2番は納得が出来ますが、3番は何故?
No.1ベストアンサー
- 回答日時:
一文字目から見ているのでは?
"100" と "99" の比較
1."1" と "9" を比較(たぶん文字コードで)
→右辺の方が大きい
→比較終了
"99" と "98" の比較
1."9" と "9" を比較
→ 同じなので次の文字へ
2."9" と "8" を比較
→左辺の方が大きい
→比較終了
数値では 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 21 の順番ですが
文字列では 1, 10, 11, 2, 20, 21, 3, 4, 5, 6, 7, 8, 9 の順番となります。
なるほど。確かにそんな感じですね。
これって仕様ですか?
MSDNとかネットで探したんですがどこにも見つけられなかったんですが。
No.4
- 回答日時:
数値の比較でテキストボックスの内容が数字に限定されているなら
数値型の変数に格納して比較したほうがいいように思います
dim nText1 as Integer, nText2 as Integer
nText1 = Text1.Text
nText2 = Text2.Text
として nText1とnText2を比較すればいいと思います
Integerの範囲で収まらないようならば LongやSingleまたはDoubleなどを使いましょう
No.3
- 回答日時:
こんにちは
横からごめんなさい。#1補足です。
>これって仕様ですか?
文字コードの大小で比較しているからです。VBに限った話しではありません。
国際標準ISOコード(通常半角と呼んでいる)だと次のようになっています(タイプフェースは書体という意味ですが、フォントといった方が判りやすいかも)。
タイプ
フェース コード
'0' = &H30
'1' = &H31
'2' = &H32
'3' = &H33
'4' = &H34
'5' = &H35
'6' = &H36
'7' = &H37
'8' = &H38
'9' = &H39
VBのchr$関数で chr$(&H30) とすれば、文字'0'(ゼロ)を返します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
「:」について
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
-
4
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
5
チェックボックスを操作できないようにしたいです VB.NET
Visual Basic(VBA)
-
6
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
7
VB6でLabelの最前面にText Boxを書く
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全角英数字とハイフンを半角に...
-
Path型をString型へ変換する(Java)
-
クエリの結果とレコードセット...
-
javascriptで文字列のsjis利用...
-
C言語32bitから64bitの移行につ...
-
String <=> byte配列 の際のエ...
-
【JAVA】CharをByteに変換したい。
-
int型のゼロ埋め
-
javaで質問です。 文字列2023/2...
-
エクセルVBAで「〜」が表現でき...
-
カタカナ変換
-
COBOLで半角カナを全角カナに変換
-
CStringをLPCTSTRへ変換
-
文字列の比較
-
PythonのUnicode文字について
-
オブジェクトの中のプロパティ...
-
IF関数でEmpty値を設定する方法。
-
ダブルクォーテーションを含む...
-
ORA-01858: 数値を指定する箇所...
-
Javaで改行などが出来ないのです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
javascriptで文字列のsjis利用...
-
Path型をString型へ変換する(Java)
-
ダブルクォーテーションのrepla...
-
エクセルVBAで「〜」が表現でき...
-
C言語32bitから64bitの移行につ...
-
int型のゼロ埋め
-
Visual Basic でのコードをASCI...
-
Windows-31Jからutf-8への変換...
-
substring バイト単位でやりたい
-
カタカナをローマジに変換する。
-
javaの初歩的な質問です。
-
byte配列をImageに変換する
-
phpでの文字コード変換について
-
JavaのStringクラスに「外字」...
-
"\\n"を"<br>"にうまく変換でき...
-
カタカナ変換
-
JAVAでのShift-JISとEUC-JP間の...
-
COBOLで半角カナを全角カナに変換
-
TEXTAREAからのデータを改行入...
おすすめ情報