文字変換(半角から全角)をする際、
「実行時エラー '28':スタック領域が不足しています」
と出てしまいます。
何をどうすれば解決できますか?
ご教授お願いします。
<ソース:至ってシンプルです>
'//--------------------------------------------------------------
'// Form上にText1, Text2, CommandButton が存在。
'// ボタン押下時に、Text1の文字列をText2へ全角変換をして表示するのみ
'//--------------------------------------------------------------
Sub Command1_Click()
Text2.Text = ChangeStr( Text1.Text )
End Sub
Function ChangeStr(wstr As String) As String
ChangeStr StrConv(wstr, vbWide)
End Function
■Windows2000, VisualBasic6.0
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/
_/ BY SUMPLAZA NAKANO-WARD
_/
−−自己レス−−
Sub Command1_Click()
Dim w_str As String
w_str = Text1.Text
Call ChangeStr(w_str)
Text2.Text = w_str
End Sub
Sub ChangeStr(ByVal str As String)
str = StrConv(str, vbWide)
End Sub
とりあえず、上記のソースに変更するとスタック領域に関するエラーは
なくなり実行することができました。
が、全角に変換されないのはなぜ??
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/
_/ BY SUNPLAZA NAKANO-WARD
_/
>Function ChangeStr(wstr As String) As String
> ChangeStr StrConv(wstr, vbWide)
>End Function
ChangeStr = StrConv(wstr, vbWide)
=(イコール)が無い為でしょう
ChangeStr StrConv(wstr, vbWide)では
Call ChangeStr(StrConv(wstr, vbWide))の省略形になっています
> スタック領域に関するエラー
スタック不足になる理由は、Tamyさんが書かれていますね。
イコールが抜けていた事により、無限に再帰呼出されていた事が原因です。
> Sub ChangeStr(ByVal str As String)
> str = StrConv(str, vbWide)
> End Sub
> が、全角に変換されないのはなぜ??
ByValだからでしょう。
戻り値ではなく引数で返したいのなら、ByRefにする必要があります。