[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/03/07(Mon) 16:15
投稿者名:NAO
Eメール:
URL :
タイトル:
指定した文字の位置の取得
みなさんこんにちは
あるテキストボックスに、固定文字 + 変動文字 が入ります。
この場合、変動文字の最初には必ず "(" が入ります。
この "(" の位置が、テキストボックスの左から何バイト目にあるか、
分かる方法はありますでしょうか。また固定文字には、全角、半角両方使用されています。
そして、"(" の位置が分かった後、その位置から変動文字を入れたいのです。
どのように記述したらよろしいでしょうか。
誰か分かる方教えて下さい。

投稿時間:2005/03/07(Mon) 16:53
投稿者名:ガッ
Eメール:
URL :
タイトル:
Re: 指定した文字の位置の取得
> あるテキストボックスに、固定文字 + 変動文字 が入ります。
> この場合、変動文字の最初には必ず "(" が入ります。
> この "(" の位置が、テキストボックスの左から何バイト目にあるか、
> 分かる方法はありますでしょうか。
文字コード不明だけど、InstrBで取れない?
むしろ、固定長の終わりに"("があるなら、同じ長さなので何バイト目にあるかなんて調べな
くてもいい
のでは?

> また固定文字には、全角、半角両方使用されています。
> そして、"(" の位置が分かった後、その位置から変動文字を入れたいのです。
この辺りは適当に。
よいうより、「固定文字 + 変動文字」が入力されている状態で、変動文字がを入れるなんていうのがち
ょと不明…

※なんか激しい誤爆の予感

投稿時間:2005/03/08(Tue) 10:18
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^2: 指定した文字の位置の取得
みなさん返答ありがとうございます。
instrBを使用して行ったのですが、
例えば、InStrB("ああ/いい (", " ")の場合、私は10が返ってくる
と思うのですが、11が返ってきます。
"ああ/いい (" の文字だけ見れば、全角2バイト、半角1バイトと計算すれば
10が返ってくると思うのですが、何かまちがえているのでしょうか。
すいませんが教えて下さい。

投稿時間:2005/03/08(Tue) 10:21
投稿者名:Say
Eメール:
URL :
タイトル:
Re^3: 指定した文字の位置の取得
> "ああ/いい (" の文字だけ見れば、全角2バイト、半角1バイトと計算すれば
Unicodeの場合、1文字=2バイトです。

投稿時間:2005/03/07(Mon) 16:55
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 指定した文字の位置の取得
> この "(" の位置が、テキストボックスの左から何バイト目にあるか、
バイト数も文字数もVBは同じです。(半角も2バイトなので文字数×2)
ここの文字列処理関係をご覧下さい。
又、VB簡易リファレンスの中の文字列関係をよくご覧下さい。

前回の質問の返信がまだのようですが?
★ - テキストボックスを複数個表示 - NAO 02/18-11:45 No.2190

投稿時間:2005/03/07(Mon) 17:20
投稿者名:Say
Eメール:
URL :
タイトル:
Re: 指定した文字の位置の取得
思うに、こんなことをしたいんでないかえ?

Option Explicit

Private Sub Command1_Click()
    Text1.Text = Replace(Text1.Text, "(", "(param as Long")
End Sub

Private Sub Form_Load()
    Text1.Text = "Function foo() As Long"
End Sub

投稿時間:2005/03/08(Tue) 11:22
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^2: 指定した文字の位置の取得
ありがとうございます。
うまくいきました。
私の疑問であった、
InStrB("ああ/いい (", " ")の場合、11が返ってくる原因として
文字コード変換をしなければならない事は分かったのですが、
ここの文字列処理関係を見ても意味がよく分かりません。(素人でしてすいません)
もし知っていたら、どうすればよいか分かるでしょうか。
よろしくお願いします。

投稿時間:2005/03/08(Tue) 11:36
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^3: 指定した文字の位置の取得
> ありがとうございます。
> うまくいきました。
> 私の疑問であった、
> InStrB("ああ/いい (", " ")の場合、11が返ってくる原因として
> 文字コード変換をしなければならない事は分かったのですが、
> ここの文字列処理関係を見ても意味がよく分かりません。(素人でしてすいません)
> もし知っていたら、どうすればよいか分かるでしょうか。
> よろしくお願いします。

StrConv関数でUnicodeからShiftJISに変換してやれば出来ます。
InStrB(StrConv("ああ/いい (",vbFromUnicode) , StrConv(" ",vbFromUnicode))

投稿時間:2005/03/08(Tue) 13:06
投稿者名:NAO
Eメール:
URL :
タイトル:
Re^4: 指定した文字の位置の取得
ありがとうございます。
助かりました。
今後ともよろしくお願いします。