文字列連結がうまくいかない


HTML-M  2008-07-05 17:56:40  No: 140028  IP: 192.*.*.*

strという変数のなかには、ggという文字列がはいっています。

Dim strB As String

strB=Mid(str, 8) & "が参加しました。"

StrBには、ggしか入っていませんでした。
なぜでしょうか?

編集 削除
HTML-M  2008-07-05 17:58:59  No: 140029  IP: 192.*.*.*

すみません。

訂正します。

strの中身は、実際には"半角スペース7"に「gg」です。
(str="       gg")

編集 削除
Blue  2008-07-06 01:46:09  No: 140030  IP: 192.*.*.*

VB6とVB2005で下記のコードを試しましたが問題ないようです。

    Dim str As String
    Dim strB As String
    
    str = "       gg"
    strB = Mid(str, 8) & "が参加しました。"
    MsgBox strB & vbCrLf & _
           "文字数:" & Len(strB)


どのような確認の仕方をしたのでしょうか?

それと開発環境は必ず明記しましょう。
書くのが面倒であれば、ここではなくVB6用の掲示板・VB.NET用の掲示板が
それぞれあるのでそちらで質問してください。

編集 削除
HTML-M  2008-07-06 08:13:21  No: 140031  IP: 192.*.*.*

すみません。
開発環境は、VB2008・WinXPです。

本当は、

Dim str As String = encode.GetString(receivedDATA.ToArray())
        If Mid(str, 1, 3) = "MSG" Then
            msgAdd(Mid(str, 10, Mid(str, 8, 1)) & ">>" & Mid(str, 11 + Mid(str, 8, 1)))
        ElseIf Mid(str, 1, 7) = "NAMES  " Then
            MsgBox(Mid(str, 8) & "が参加しました。")
        End If

こんな感じのコードです。
わかりやすくしようと・・・。

receivedDATAは、IO.MemoryStreamです。

本当は、strは、"NAMES  gg"です。

編集 削除
HTML-M  2008-07-06 09:01:21  No: 140032  IP: 192.*.*.*

修正します

msgAddはMsgBoxです

編集 削除
HTML-M  2008-07-06 09:49:10  No: 140033  IP: 192.*.*.*

Mid関数のlengthを設定すると、結合できました。
なぜでしょうか?

編集 削除
我龍院  2008-07-07 08:58:47  No: 140034  IP: 192.*.*.*

先ずコードの行頭に
Option Strict On
と入れることをお奨めします。

編集 削除
 2008-07-07 15:15:23  No: 140035  IP: 192.*.*.*

我龍院氏が書かれてる内容に関係することだが
プログラムする時は常に「データ型」を意識しながら
するようにしよう
データ型の認識が いい加減な初心者プログラマは、
わりと ちょっとした事で引っ掛かりがちな気がする
(逆を言えば、「たまたま動いてるだけ」なプログラムを
  する人も、VB初心者には少なくない気がする)
こういう細かい部分も能力の差となる場合があるよ

編集 削除