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

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

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

Re[1]: vb6のstringについて


(過去ログ 165 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■95442 / inTopicNo.1)  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個分の文字列が連結されません。
どのようにすればよろしいでしょうか?

引用返信 編集キー/
■95453 / inTopicNo.2)  Re[1]: vb6のstringについて
□投稿者/ キングダム (63回)-(2020/08/02(Sun) 15:02:13)
No95442 (悩み中 さん) に返信
+ を & にしたら良いとか、違うかな
引用返信 編集キー/
■95458 / inTopicNo.3)  Re[2]: vb6のstringについて
□投稿者/ 大谷刑部 (91回)-(2020/08/03(Mon) 09:53:36)
No95453 (キングダム さん) に返信
> ■No95442 (悩み中 さん) に返信
> + を & にしたら良いとか、違うかな

またはint型の変数に対してCStrで型変換するかですね。
引用返信 編集キー/
■95460 / inTopicNo.4)  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
にしても同じですよね?

引用返信 編集キー/
■95461 / inTopicNo.5)  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しか入らなくなるので格納文字数的に劣化しますよね。


引用返信 編集キー/
■95463 / inTopicNo.6)  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じゃないよね?
引用返信 編集キー/
■95464 / inTopicNo.7)  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 の内容を、外部ファイルやデータベース等に出力しようとしているが、
 出力先の領域に十分な長さが無く、途中で打ち切られてしまっている。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -