文字変換時のエラーを回避するには?


サンプラザ中野区  2004-05-07 04:18:18  No: 113043

文字変換(半角から全角)をする際、
「実行時エラー '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
_/


サンプラザ中野区  2004-05-07 04:38:14  No: 113044

−−自己レス−−
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
_/


Tamy  2004-05-07 06:00:19  No: 113045

>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))の省略形になっています


魔界の仮面弁士  2004-05-07 07:05:30  No: 113046

> スタック領域に関するエラー
スタック不足になる理由は、Tamyさんが書かれていますね。
イコールが抜けていた事により、無限に再帰呼出されていた事が原因です。

> Sub ChangeStr(ByVal str As String)
>   str = StrConv(str, vbWide)
> End Sub
> が、全角に変換されないのはなぜ??
ByValだからでしょう。
戻り値ではなく引数で返したいのなら、ByRefにする必要があります。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加