
今までC-Builderを使用しており、今回、会社の方針でVBでプログラムを書き始めた者です。
データーの比較を行いたいのですが、VBには文字定数と言う概念ありますか?
C ですと以下の様なコーディングが可能です。
iDataが65の時flagを1に、それ以外の時にflagを2にする。
int iData;
i f( iData == 'A' )
flag = 1;
else
flsg = 2;
現在VBで if iDat = 65 then
flag =1
else
flag = 2
end if
と書いていますが、もしVBに文字定数の概念があれば65ではなく'A'の値と比べて居る様にコーディングしたいのです。
もちろんコメントに書いて置けば良いのですが方法があればそれを使って見たいと思っています。
若しくはVBにはその様な概念は無いとの回答でも構いません。
色々探しましたが、分かりませんでしたので、お分かりに成る方、宜しくご回答下さい。
No.4ベストアンサー
- 回答日時:
#3のコードをコンパイルしたものを、ILSpyで逆コンパイルしてみました。
Dim iTst As Integer = 65
Dim iSts As Integer
If iTst = 65 Then
iSts = 0
Else
iSts = 1
End If
Microsoft.VisualBasic.Asc("A"c)をちゃんと定数に展開してくれているみたいです。
再度のご回答ありがとうございます。
ASC()は関数の形をして居ますが、プレコンパイル形式なんでしょうかね。
ILSpyは使った事が無いので、これで構造を確認して、使えそうならこのコーディングにしてみます。
ありがとうございました。
No.7
- 回答日時:
「Goに行ってはGoに従え」
他の言語の手法を無理に持ってこない、というのが、プログラミングのコツだと思っています。
Cでは、純粋な「文字」という型がありません。
char は整数の一つであって、「文字」ではありません。
VBでは、純粋な文字を表現するための型があります。数値で代用する必要がありません。
A という文字には、もともと番号なんてありません。65というのは、ASCIIで決めたものです。
「iDataの数値が"A"のASCIIコードだったら」という意味を明確に表わしているのは、VBの方では。
また、最近の言語は、いろんな最適化が行われます。
下手なチューニングは逆効果、ということもあります。
VBでは、数値も「オブジェクト」です。Cの数値のような高速性を求めてはいけません。
iDataも、CharやStringする方が簡単、とかはないですか?
No.5
- 回答日時:
VB.netから言語仕様が変更されて文字の定数はなくなり列挙体となりました。
Keys 列挙体でヘルプを参照してください。
if iDat = Keys.A then
flag =1
else
flag = 2
end if
ご回答ありがとうございました。
Keysに関してMSDNを読んでみましたが、これはキーボードのキーと1対1で設定されている定数で、私の目的とする定数とは異なるものでした。
ありがとうございました。
No.3
- 回答日時:
こんな感じかな?
Dim iTst As Integer
Dim iSts As Integer
iTst = 65
If iTst = Microsoft.VisualBasic.Asc("A"c) Then
iSts = 0
Else
iSts = 1
End If
ご回答ありがとうございます。
このコーディングでコンパイラーは通りました。
ただ、これはasc関数ですよね、定数では無いと思います。
すると、やはりVBには文字定数と言う概念は無いのかも知れませんね。
* 定数 そのまま値として使用出来る。この場合、値を変換する処理時間は不要。
即ちコンパイラーが値を処理し、実行時には即値と成っているので処理時間は不要。
関数 その値を処理して値を返す。この場合は値を変換するのに実行時に処理時間がかかる。
ありがとうございました。
No.2
- 回答日時:
"A"cのように書きます。
MSDNでは,
文字型 (Char) (Visual Basic)
http://msdn.microsoft.com/ja-jp/library/7sx7t66b …
の「プログラミングのヒント」に,
> 型宣言文字。 1 文字のリテラル文字列に、リテラルの型文字 C を追加すると、Char データ型に変換されます。 Char には識別子の型文字はありません。
のように書かれています。
# 見つけにくいですが……。
ご回答ありがとうございます。
ただ、残念ながら私が探しているコードとは異なる物と思われます。
試しにコーディングしてみた所、エラーと成ってしまいました。
Dim iTst As Integer
Dim iSts As Integer
iTst = 65
If iTst = "A"c Then
iSts = 0
else
iSts = 1
End If
でIf iTst = "A"c Then の所に"演算子'='は、型'Integer'および型'Char'に対して定義されていません。"と表示されました。
上記コーディングでAの値はデシマルの65ですからiStsが0に設定出来ればよいのですが。
ありがとうございました。
No.1
- 回答日時:
早速のご回答ありがとうございます。
ただ、私が求めているのは Const では無い感じです。
Constは文字を定数に定義しているので、コーディング上は使えると思いますが、私のやりたいのは(VBに存在いるとして) コーディングして居る行にそのまま値を書く方法です。
多分ConstはC で言う#define AAA 5 // AAA を 5とする
と同じだと思います。Const A as integer 65 とすれば良いのでしょうけど、Aが65である根拠がこの行では表現出来ず、コメントで 65は 文字のAの値であると書かないと成らないと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのDjangoでHTML内で変数を利用したいです 3 2022/05/15 15:33
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- HTML・CSS HTMLの・要素・属性・属性値 はプログラム言語の「変数」みたいに変更できますか? 5 2022/10/04 05:27
- Visual Basic(VBA) VBでExcelの表形式の様なデザインを作りDBと連携させる。 4 2023/02/28 11:39
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのクエリで、replace関数...
-
文字列の後ろから必要分だけ削...
-
UNICODE文字が含まれているかの...
-
VS C++6.0のCString にて先頭1...
-
文字列検索で
-
URL抽出
-
ランダム文字列の生成の仕方
-
vbscriptにてTeratrm macroの引...
-
右から何文字目にあるか文字位...
-
URLで使える文字・使えない...
-
エクセル関数で記号から記号の...
-
お願いです!!
-
VBScriptでXcopyしたいのですが
-
ExcelVBAを使って、値...
-
[エクセル]連続する指定範囲か...
-
テキストボックスのvalueとtext...
-
エクセルvbaで、別シートの最下...
-
特定のセルが空白だったら、そ...
-
エクセルで、絶対値の平均を算...
-
ExcelのINDEXとMATCH関数でスピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、replace関数...
-
文字列の後ろから必要分だけ削...
-
UNICODE文字が含まれているかの...
-
ダブルクォーテーションを文字...
-
文字列にアルファベットが何文...
-
エクセル関数で記号から記号の...
-
GetDlgItemTextについて
-
vb.net IVSの漢字を1文字切り...
-
VBScriptでXcopyしたいのですが
-
VS C++6.0のCString にて先頭1...
-
URLで使える文字・使えない...
-
秀丸マクロで、ダブルクォーテ...
-
文字数と単語数を数えるプログラム
-
右から何文字目にあるか文字位...
-
awk で右端の文字を1文字削除...
-
VB2008 文字列に等間隔にスペ...
-
vb6の初心者です。特定の文字に...
-
リッチテキストボックスについて
-
URL抽出
-
JEditorPaneについて
おすすめ情報