
初歩的なことかも知れませんが教えてください。
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- C言語・C++・C# C++で割り算の結果を昇順に出力するプログラムを作りたいのですが、例えば(double)100000 3 2022/07/15 17:46
- Excel(エクセル) エクセルの日付から年末尾2桁と月を1月をA~Lに変換したい 3 2022/08/08 10:32
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) Excelで、ゴルフ場、ボウリング場、フィットネスクラブの利用者数比較をしたいです。 しかしフィット 4 2022/11/20 22:17
- Excel(エクセル) Excelによる大小判断 3 2023/04/28 15:53
- C言語・C++・C# int temp = 0; if(isdigit(arr[i])){//文字が数字であれば(0~9) 1 2022/03/27 01:37
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
このQ&Aを見た人はこんなQ&Aも見ています
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
「:」について
Visual Basic(VBA)
-
変数名の付け方
Java
-
-
4
VB6 配列を初期化したい
Visual Basic(VBA)
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
テキストボックスの入力制限
Visual Basic(VBA)
-
7
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
8
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
9
チェックボックスを操作できないようにしたいです VB.NET
Visual Basic(VBA)
-
10
初期フォーカスについて
Visual Basic(VBA)
-
11
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
12
VB6でLabelの最前面にText Boxを書く
Visual Basic(VBA)
-
13
VB.Net Object型 空かどうか
Visual Basic(VBA)
-
14
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
15
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
半角を全角に
-
シフトJISのエンコード
-
半角カタカナをローマ字変換す...
-
「C#」文字コードの取得&文字変換
-
秒を時分秒へ変換
-
cookie から取り出すと文字化け
-
JavaのStringクラスに「外字」...
-
substring バイト単位でやりたい
-
jspの文字化けについて
-
Javaで0から2πまでの範囲で乱...
-
エクセルVBAで「〜」が表現でき...
-
Visual Studio 6.0でビルド可能...
-
C言語32bitから64bitの移行につ...
-
JAVAソースコードの暗号化
-
javascriptで文字列のsjis利用...
-
タイピングゲーム作成中 複数...
-
DBから取得したデータの文字化け
-
Path型をString型へ変換する(Java)
-
カタカナをローマジに変換する。
-
魚眼画像から(パノラマのよう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションのrepla...
-
javaで質問です。 文字列2023/2...
-
javascriptで文字列のsjis利用...
-
Path型をString型へ変換する(Java)
-
カタカナをローマジに変換する。
-
Visual Basic でのコードをASCI...
-
JavaのStringクラスに「外字」...
-
エクセルVBAで「〜」が表現でき...
-
Windows-31Jからutf-8への変換...
-
C言語32bitから64bitの移行につ...
-
文字列の比較
-
int型のゼロ埋め
-
javaの初歩的な質問です。
-
byte型のマイナスの扱いについて
-
substring バイト単位でやりたい
-
JAVAでのShift-JISとEUC-JP間の...
-
byte配列をImageに変換する
-
byte[] を long,float とかに...
-
UTF-8とUnicodeの互換性
-
COBOLで半角カナを全角カナに変換
おすすめ情報