tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
動的配列を返すプロシージャ(VB6.0)_1 ( No.1 )  [親スレッドへ]
日時: 2011/04/05 11:34
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[基本コード][][]                                                    *
* キーワード:関数,プロシージャ,戻り値,,,                                         *
***********************************************************************************

--------------------------------------------------------------------------
Re: 動的配列を返すプロシージャについて - takk 2003/01/25-14:39 No.2425
--------------------------------------------------------------------------

手元にVB5.0がないんですが……。
下記のソースで試してみてください。
秋風さんのソースではエラーが多く、また汎用性に欠けるので手直ししました。
ちなみに戻り値をString()にするとエラー出る、とのことですがVB6.0では問題なく動いています。
もしダメそうならnanashiさんの意見通り、戻り値をVariant型で指定してみてください。


'使う時はこんな感じで
strTimeList() = split(TimeList, ",")

'ファンクション
Private Function Split(ByVal Data As String, Optional ByRef Demiliter As String = " ") As String()
    Dim lCnt&, lPos&, lLen As Long
    Dim sBuff() As String
    
    '文字列が指定されていない時は要素なしの配列を返す
    If Len(Data) = 0 Then
        Split = Array()
        Exit Function
    End If
    
    'デミリタの長さを取得
    lLen = Len(Demiliter)
    
    Do
        '次のデミリタの位置を取得
        lPos = InStr(Data, Demiliter)
        
        '配列に追加
        If lPos > 0 Then
            ReDim Preserve sBuff(lCnt)
            
            sBuff(lCnt) = Left$(Data, lPos - 1)
            Data = Mid$(Data, lPos + lLen)
            
            lCnt = lCnt + 1
        Else
            ReDim Preserve sBuff(lCnt)
            
            sBuff(lCnt) = Data
            Data = vbNullString
        End If
    Loop While Len(Data) > 0
    
    '結果を返す
    Split = sBuff
End Function



 [スレッド一覧へ] [親スレッドへ]