C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

vb6のstringについて /悩み中 (20/08/02(Sun) 03:52) #95442
Re[1]: vb6のstringについて /キングダム (20/08/02(Sun) 15:02) #95453
│└ Re[2]: vb6のstringについて /大谷刑部 (20/08/03(Mon) 09:53) #95458
│  └ Re[3]: vb6のstringについて /悩み中 (20/08/03(Mon) 10:35) #95460
│    └ Re[4]: vb6のstringについて /大谷刑部 (20/08/03(Mon) 10:46) #95461
│      └ Re[5]: vb6のstringについて /くまくま (20/08/03(Mon) 12:51) #95463
Re[1]: vb6のstringについて /魔界の仮面弁士 (20/08/03(Mon) 13:24) #95464


親記事 / ▼[ 95453 ] ▼[ 95464 ]
■95442 / 親階層)  vb6のstringについて
□投稿者/ 悩み中 (1回)-(2020/08/02(Sun) 03:52:30)

分類:[VB6 以前] 

vb6のstringについて256文字以上連結

Dim str as String
Dim intloop as Integer

For intloop=0 TO 19
str=str+"work joint“+intloop
Next intloop

20個分の文字列が連結されません。
どのようにすればよろしいでしょうか?

[ □ Tree ] 返信 編集キー/

▲[ 95442 ] / ▼[ 95458 ]
■95453 / 1階層)  Re[1]: vb6のstringについて
□投稿者/ キングダム (63回)-(2020/08/02(Sun) 15:02:13)
No95442 (悩み中 さん) に返信
+ を & にしたら良いとか、違うかな
[ 親 95442 / □ Tree ] 返信 編集キー/

▲[ 95453 ] / ▼[ 95460 ]
■95458 / 2階層)  Re[2]: vb6のstringについて
□投稿者/ 大谷刑部 (91回)-(2020/08/03(Mon) 09:53:36)
No95453 (キングダム さん) に返信
> ■No95442 (悩み中 さん) に返信
> + を & にしたら良いとか、違うかな

またはint型の変数に対してCStrで型変換するかですね。
[ 親 95442 / □ Tree ] 返信 編集キー/

▲[ 95458 ] / ▼[ 95461 ]
■95460 / 3階層)  Re[3]: vb6のstringについて
□投稿者/ 悩み中 (2回)-(2020/08/03(Mon) 10:35:32)
Dim str as String
Dim intloop as Integer

For intloop=0 TO 19
str=str+"work joint“ & Cstr(intloop)
Next intloop
途中で途切れてしまいます。
Dim str as String*256
にしても同じですよね?

[ 親 95442 / □ Tree ] 返信 編集キー/

▲[ 95460 ] / ▼[ 95463 ]
■95461 / 4階層)  Re[4]: vb6のstringについて
□投稿者/ 大谷刑部 (93回)-(2020/08/03(Mon) 10:46:39)
No95460 (悩み中 さん) に返信
> Dim str as String
> Dim intloop as Integer
>
> For intloop=0 TO 19
> str=str+"work joint“ & Cstr(intloop)
> Next intloop
> 途中で途切れてしまいます。
構文上そうはならないと思います。
固定長にしない限り、String型は遅くはなっても数百文字で入らなくなるとはあり得ません。
どういう状態になっているのか変数のstrをDebug.printかmsgboxに出すなりして確認してください。

> Dim str as String*256
> にしても同じですよね?
逆に256しか入らなくなるので格納文字数的に劣化しますよね。


[ 親 95442 / □ Tree ] 返信 編集キー/

▲[ 95461 ] / 返信無し
■95463 / 5階層)  Re[5]: vb6のstringについて
□投稿者/ くまくま (28回)-(2020/08/03(Mon) 12:51:56)
せっかく指摘されていますのでシッカリ直しましょう
× str=str+"work joint“ & Cstr(intloop)
○ str = str & "work joint" & CStr(intloop)
ちなみにこのStringって「VB6」のStringだよね?
データベースのStringじゃないよね?
[ 親 95442 / □ Tree ] 返信 編集キー/

▲[ 95442 ] / 返信無し
■95464 / 1階層)  Re[1]: vb6のstringについて
□投稿者/ 魔界の仮面弁士 (2798回)-(2020/08/03(Mon) 13:24:40)
No95442 (悩み中 さん) に返信
> vb6のstringについて256文字以上連結
> Dim str as String
> Dim intloop as Integer
> For intloop=0 TO 19
> str=str+"work joint“+intloop
> Next intloop

大文字小文字の崩れ、全角半角の記述ミス、本来補完されるべき空白の欠如などがあるので、
どうみても「実際のコード」とは別物ですよね、これ。


変数 str というのも、Str 関数と競合するので非推奨だったりします。
まぁ、str は予約語では無い(Conversion.Str と書けば区別できる)ので、まぁそれは良いとして…。


> str=str+"work joint“+intloop

という式は、VB6 だと
 str = CStr(CDbl(str & "work joint") + CDbl(intloop))
に相当するものとして処理されます。

しかし CDbl("work joint") という数値変換は行えないため、
  実行時エラー '13':
  型が一致しません。
が出てしまうはずです。実際のコードを、正確に記述してみてください。



No95460 (悩み中 さん) に返信
> str=str+"work joint“ & Cstr(intloop)

これでも間違いでは無いですが、普通は
 str = str & "work joint" & CStr(intloop)
もしくは
 str = str & ("work joint" & CStr(intloop))
です。個人的には後者推奨。


> 途中で途切れてしまいます。

ループ終了後、合計何文字になったか、
 MsgBox Len(str)
の実行結果を教えて頂けますか?
For intloop = 0 To 19 であれば、おそらく「230」になるはず…。


実際のコードが、質問内容とは実際には異なっているのであれば、下記の点に注意してみてください。


可能性1) 変数 str 内に vbNullChar が含まれていて、それを MsgBox や TextBox で
 表示しているため、vbNullChar 以降の文字が出力されていない。

可能性2) 変数 str の文字列が長すぎて(たとえば、半角1023文字を超えていた場合など)、
 Debug.Print 等で表示しきれず、折り返されて改行表示されてしまっている。

可能性3) 変数 str の内容を、外部ファイルやデータベース等に出力しようとしているが、
 出力先の領域に十分な長さが無く、途中で打ち切られてしまっている。
[ 親 95442 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -