■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#1517-2
ユーザー定義型変数内の文字型配列を、サブプロシージャに渡せない・・・
VB6を始めて間もない者です。
どなたか教えて下さい。
ユーザー定義型変数内の配列(文字型)を、サブプロシージャに引数として渡したいのですが、エラーになってしまいます。
例えば下記の定義で
type mydef
    araystr(30) As String * 50
    araynum(20) As Integer
End Type

Dim MYD As mydef  を宣言し、

Private Sub Form_Load()
    CalAray MYD.araystr()
    Label1.Caption = MYD.araystr(10)
End Sub

Private Sub CalAray(N() As String)
    Dim i as Integer

    For i = 1 To 30
        N(i) = N(i - 1) + Str(i)
    Next
End Sub

とした時エラーになります。
色々試してみたら、変数(araystr)の長さを固定長にしなければうまくいきます。
何故なんでしょう?・・・・
また何か方法があれば教えて下さい。
#1519-1
RE#1517:ユーザー定義型変数内の文字型配列を、サブプロシージャに渡せない
> VB6を始めて間もない者です。
> どなたか教えて下さい。
> ユーザー定義型変数内の配列(文字型)を、サブプロシージャに引数として渡したいのですが、エラーになってしまいます。
> 例えば下記の定義で
> type mydef
>     araystr(30) As String * 50
>     araynum(20) As Integer
> End Type
> 
> Dim MYD As mydef  を宣言し、
> 
> Private Sub Form_Load()
>     CalAray MYD.araystr()
>     Label1.Caption = MYD.araystr(10)
> End Sub
> 
> Private Sub CalAray(N() As String)
>     Dim i as Integer
> 
>     For i = 1 To 30
>         N(i) = N(i - 1) + Str(i)
>     Next
> End Sub
> 
> とした時エラーになります。
araystr(30) As String * 50
と
N() As String
で型が違うとエラーになっていますよね?
サブプロシージャも同じ様に
Private Sub CalAray(N() As String * 50)
と宣言すれば良いです。

あと・・・
固定長文字列で
>         N(i) = N(i - 1) + Str(i)
この書き方をしても
N(i)にはN(i - 1)が設定されるだけで、
Str(i)が連結された文字列が設定される事はありません。

正数の場合、Str関数だと先頭に符号を表示するためのスペースが付きますが
スペースを付けたくなければCStr関数というのもあります。
#1555-2
RE#1519:ユーザー定義型変数内の文字型配列を、サブプロシージャに渡せない
> araystr(30) As String * 50
> と
> N() As String
> で型が違うとエラーになっていますよね?
> サブプロシージャも同じ様に
> Private Sub CalAray(N() As String * 50)
> と宣言すれば良いです。
> 
> あと・・・
> 固定長文字列で
> >         N(i) = N(i - 1) + Str(i)
> この書き方をしても
> N(i)にはN(i - 1)が設定されるだけで、
> Str(i)が連結された文字列が設定される事はありません。
> 
> 正数の場合、Str関数だと先頭に符号を表示するためのスペースが付きますが
> スペースを付けたくなければCStr関数というのもあります。

あき☆彡 様
さっそくお答え頂き、ありがとうございました。
聞いてみれば簡単な事でしたが、わかるまでは試行錯誤して時間ばっかりとられるもので・・・
こういうアドバイスがもらえると大変助かります。
また後半のご指摘も大変参考になりました。
実はこのコードは「試行錯誤」しているときの、テスト用のもので、
この部分はあまり考えずに書いていました。
このご指摘がなければ、今ごろはこの問題で悩んでいたと思います。(^_^;)
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)