すみません、質問させてもらいます。
プロシージャに配列データを渡す場合、ヘルプには
'---ここから
#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
文字列配列渡しについて
Re: 文字列配列渡しについて
String型は扱いが難しく、ちょっと面倒なことになるのですが、これで動きます。
ちなみに「_System_HeapStringAlloc」「_System_HeapStringFree」は、ActiveBasicが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型を作るときに内部で使っている関数です。
[hira]
http://hira.hopto.org/
http://hira.hopto.org/