<Access キャラクタコード?って何?>
目次
1.はじめの挨拶
2.キャラクタコード?って何?
3.VBAだと?
4.おわりの挨拶
----------------------------------------------------------------------------
/*
* 1.こんにちは
*/
こんにちは。
今回は、一息ついて、
キャラクタコード?って何?
を書いてみたいと思います。
ハッシュと二分検索は?画像の件は?ローマ字変換は?
・・・・・・・・
もしもし?聞こえてる?
・・・.....
見逃してください(先に進ませてください。)
じゃ、今回は、いいや、速く進めな。
/*
* 2.キャラクタコード?って何?
*/
会話の中で、20(ニイマル)だったら?
とか、聞いたことありませんか?
Nullだったらは、よく聞くけど、20(ニイマル)は、聞かないなぁ
そうですか。
キャラクタコード or アスキーコードって聞いた事ありますか?
JISコードとかじゃなくて?あっ、ユニコード?EUCコード?
難しい話に、持っていかないで下さい。
えっとですね。
キャラクタコード or アスキーコード
まぁ、反論はかくごして、
半角文字の文字コードって言っていいのかな。
スペースが16進で20
1 が 16進で31
A が 16進で41
ア が 16進でB1
と、1文字1文字、コードが決まってます。
だから、なに?
通常の計算は、
100-50とか、数値ですよね
まぁ、そうですね。
じゃ、文字B−文字Aは(’B’−’A’)
そんなのできないよ。
言い方、悪かったです。
Bの文字コード − Aの文字コードは?
1? あまり、なっとくいかないけど。
はい、正解です。
では、Aの文字コード16進で41+3は?
なめんなよ、16進で44でしょ。
キャラクタコード表で16進数の44は?
キャラクタコード表って、どこにあるんだよ。
オレ持ってないよ。
う〜ん、どこにあるかなぁ?
まぁ、いいや、16進44に対応する文字は、"D"です。
こんな会話やってても、意味ないので、
Access VBAでサンプル作ります。
/*
* 3.VBAだと?
*/
例題として、
InputBoxから文字列を受け取ります
その中のA〜Zをa〜zに変換して、
msgboxで表示します。
----
Private Sub B0_AZtoaz_Click()
Dim strMOTO As String
Dim strSAKI As String
Dim strCHK As String
Dim nCNT As Integer
Dim nSA As Integer
'ここで、文字を入れる、、
strMOTO = InputBox("好きな文字列を入れてください")
'入力文字数のチェック
If Len(strMOTO) = 0 Then
MsgBox "0文字だとテストになりませんよ、、、"
Exit Sub
End If
'初期化です
strSAKI = ""
'入力された文字数分、1文字毎に処理する
For nCNT = 1 To Len(strMOTO)
strCHK = Mid(strMOTO, nCNT, 1) '一文字取り出す
'A-Z判断
If Asc("A") <= Asc(strCHK) And Asc(strCHK) <= Asc("Z") Then
nSA = Asc(strCHK) - Asc("A") 'Aからどれだけ離れているか?
strCHK = Chr(Asc("a") + nSA) 'aに求めた差を+する。aから移動
End If
'結果の文字を&でプラスする
strSAKI = strSAKI & strCHK
Next nCNT
'結果の表示
MsgBox strMOTO & vbCrLf & "から" & vbCrLf & strSAKI
End Sub
----
なんか、サンプルにキレがないなぁ、、、
何か質問は?
いいですか、
'ここで、文字を入れる、、
strMOTO = InputBox("好きな文字列を入れてください")
ってなんですか?
あまり、使わないのですが、
InputBoxを使用すると、入力用のウインドウが出て、
入力された結果を返してくれます。
ここでは、任意の文字を入れさせたかったので、
使用しています。
Accessだとフォームのme!DATA とかでもOKです。
素朴な質問なんですが、
Len(strMOTO) , Mid(strMOTO, nCNT, 1) , Asc("A")
ってなんですか?Chrって?
えっとですね、
len() --> 文字数を返してくれます
mid() --> mid("ABCDEFG", 2 , 3) --> 2文字目から三文字分文字を抜き出します
asc() --> アスキーコードを返します
chr() --> chr(&h41) --> 指定したコードの文字を返します
詳しくは、ヘルプを見るか、サンプルをいろいろ見て、なれてください。
単体は、いいから、詳しく、意味を教えてくださいよ。
'入力文字数のチェック
If Len(strMOTO) = 0 Then
MsgBox "0文字だとテストになりませんよ、、、"
Exit Sub
End If
これは、inputboxで何も入力しない場合を考えて、
受け取った、文字数を調べています。
0文字の場合、メッセージを出して、終了してます。
'A-Z判断
If Asc("A") <= Asc(strCHK) And Asc(strCHK) <= Asc("Z") Then
nSA = Asc(strCHK) - Asc("A") 'Aからどれだけ離れているか?
strCHK = Chr(Asc("a") + nSA) 'aに求めた差を+する。aから移動
End If
なんか、ごちゃごちゃ、してますね。
えっと、Ifで、コードAより大きくコードZより小さいか聞いて、
その後、−”A”をして差を求めて、”a”を+してる?
*Dの時、"D"-"A" が3、、で、"a"+3、3文字分で"d"になる?
なんか、よくわからないや、、
あと、
'結果の表示
MsgBox strMOTO & vbCrLf & "から" & vbCrLf & strSAKI
の中の、vbCrLfってなに?
結果を改行させたいので、使ってます。
試しに MsgBox "A" & vbCrLf & "B" とやってみてください。
1つ言っていい
どうぞ。
strconv("ABCDEFG", vbLowerCase)
でできるんじゃない。。。
そうだけど、説明したかったの、、、
strMOTO = InputBox("好きな文字列を入れてください")
MsgBox strMOTO & vbCrLf & "から" & vbCrLf & strconv(strMOTO, vbLowerCase)
じゃ、コードの説明にならないでしょ、、、
/*
* 4.おわりの挨拶
*/
strconv("ABCDEFG", vbLowerCase)
の内部の動きとは、違うと思いますが、
1つの関数でできてることが、
実際は、いろいろな組み合わせで
動いているんだなぁ、、、ていどに思っていただければ、、、
今回の講座は、成功かなぁ?
なかなか、説明、難しい、、と思いつつ、今回も軽めにサヨナラです。
違うパターンのサンプル、
HPにUP
hosoku/019/index.html
して置くので、お時間のある人は、見てください。
三流PGのKen3でした。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
項目別に本音?それとも建て前?的な記事をまとめました。
|
気になったジャンル↓を選択してください。 |
Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]