VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/01/25(Sat) 14:39
投稿者takk
Eメール
URL
タイトルRe: 動的配列を返すプロシージャについて

手元に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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -