文字列配列渡しについて

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 文字列配列渡しについて

ありがとうございます。

by Tz » 2005年7月30日(土) 23:20

なるほど…
なんだか、難しそうですね…

とりあえず、hiraさんに教えてもらった方法で実装されてもらいます。
ありがとうございました。

Re: 文字列配列渡しについて

by hira » 2005年7月30日(土) 20:49

String型は扱いが難しく、ちょっと面倒なことになるのですが、これで動きます。

コード: 全て選択

#N88BASIC

Dim a[10] As String
Dim i As Long

Sub test(b As *String)
Dim Str As String
    For i=0 to 10
		Str=Str$(i*10)
		_System_HeapStringFree(b)
		b=_System_HeapStringAlloc(Len(Str))
		lstrcpy(b,Str)
    Next
End Sub

test(a)
For i=0 to 10
    Print a
Next

ちなみに「_System_HeapStringAlloc」「_System_HeapStringFree」は、ActiveBasicがString型を作るときに内部で使っている関数です。

文字列配列渡しについて

by Tz » 2005年7月30日(土) 18:02

すみません、質問させてもらいます。
プロシージャに配列データを渡す場合、ヘルプには

'---ここから
#N88BASIC

Dim a[10] As Long
Dim i As Long

Sub test(b As *Long)
For i=0 to 10
b=i*10
Next
End Sub

test(a)
For i=0 to 10
Print a
Next
'---ここまで

となっていますが、これを文字列でやろうとすると、

'---ここから
#N88BASIC

Dim a[10] As String
Dim i As Long

Sub test(b As *String)
For i=0 to 10
b=Str$(i*10)
Next
End Sub

test(a)
For i=0 to 10
Print a
Next

'---ここまで
「"b" 型が違います」というエラーが出てうまくコンパイルできないんです。
文字列の配列渡しには、何か特別なことをしないといけないんでしょうか?


AB Ver4.04
OS Win2kSP4

ページトップ