プロが教えるわが家の防犯対策術!

こんばんは
またまた壁にぶちあたっています!

VBでテキストから参照した全角文字をMidB関数等で部分参照し、
それぞれ一バイトずつのエリアに設定したいのですが、取得した値を
VB(Windows?)が認識出来ない為か「?」となります。
内容を壊さずに取得する方法があれば教えて頂きたいのですがm(__)m

サンプル
Dim strBuff1 As String * 1
Dim strBuff2 As String * 1

txtInput = "西"

strBuff1 = LeftB(StrConv(txtInput,FromUnicode),1)
strBuff2 = RightB(StrConv(txtInput,FromUnicode),1)

以上のコーディングで「strBuff1」、「strBuff2」にそれぞれ「?」が
設定されます

A 回答 (3件)

なるほど・・・


以前に何度かここの掲示板で似たようなものを載せてるので、それを一行にまとめた関数を書いておきます。

Sub Main()
  MsgBox fixStr("12345678901234567890", 4, 10)
  MsgBox fixStr("12345ああ6789ああ01ああ234567890", 4, 10)
  MsgBox fixStr("うううううう12345678901234567890", 4, 10)
End Sub

'引数1:文字列
'引数2:開始バイト目
'引数3:バイト長
Private Function fixStr(inStrings As String, inByteStart As Long, inByteLen As Long) As String
  fixStr = StrConv(MidB(StrConv(inStrings, vbFromUnicode), inByteStart, inByteLen), vbUnicode)
End Function
    • good
    • 0
この回答へのお礼

どれどれ、早速試してみよう・・・
・・・お~本当だ!

上手く行きました。
そうですね、Unicode変換して元に戻してあげないと行けないんですね
うっかりしてました^^

とても助かりました、有難う御座います!

お礼日時:2001/11/21 20:06

byte配列に変換した方がやりやすい



Dim b() As Byte
b = StrConv(txtInput, vbFromUnicode)
    • good
    • 0
この回答へのお礼

それは質問内容にも書いてあるとおりですよね・・・
し、しまったスペルを間違えてる
×:FromUnicode
○:vbFromUnicode
失礼しました^^

お礼日時:2001/11/21 20:07

何がしたいのかが良くわかりません。


2バイト文字の情報を1バイトに分割してどうするのですか?
文字情報が壊れるのは当然ですよ。

分解して得た情報 [strBuff1] と [strBuff2] から「西」という文字を作成したいのですか?

どのような結果を求めているのかがわかりません。

この回答への補足

説明不足でしたか?

結論から言うと半角全角混在のエリアを10バイトずつで切った情報にしたい
と言う事なのですが、PCと汎用機とのデータ移動のためのツールを作成しています

補足日時:2001/11/21 18:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!