by konisi » 2007年7月04日(水) 22:03
strstrに似た関数だとInStr関数が該当するかと。
strtokと同じ働きをする関数は覚えがないのですが、割と簡単に実装できそうですよ。全く同じものを作るとなるとグローバル変数が必要みたいですが。
というわけで早速実装。車輪の再開発になってなければいいが・・・。 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim strtok_strptr As *Byte
Dim strtok_p As Long
Function strtok(s1 As BytePtr,s2 As BytePtr) As BytePtr
Dim i As Long,t As Long
If s1 <> NULL then
strtok_strptr = s1
strtok_p = 0
End If
t = lstrlen(s2)
If t = 0 then
'検索する分割文字が指定されていない
'この時に返る値が分からなかったのでとりあえず-1を返す。
strtok = -1
Exit Function
End If
strtok = strtok_strptr + strtok_p
t--'AB4.20未満(4.13以下)なら t = t - 1 と置き換えること。
Do
If strtok_strptr[strtok_p] = 0 then'終端なら
strtok = NULL
Exit Function
End If
For i = 0 To t
If strtok_strptr[strtok_p] = s2 then'分割文字に出会えたなら
'置換して
strtok_strptr[strtok_p] = 0
'後処理して
strtok_p++
'現在のstrtokの値を返す
Exit Function
End If
Next
strtok_p++'AB4.20未満なら strtok_p = strtok_p + 1 と置き換えること。
Loop
End Function
strstrに似た関数だとInStr関数が該当するかと。
strtokと同じ働きをする関数は覚えがないのですが、割と簡単に実装できそうですよ。全く同じものを作るとなるとグローバル変数が必要みたいですが。
[hide=というわけで早速実装。車輪の再開発になってなければいいが・・・。][code]Dim strtok_strptr As *Byte
Dim strtok_p As Long
Function strtok(s1 As BytePtr,s2 As BytePtr) As BytePtr
Dim i As Long,t As Long
If s1 <> NULL then
strtok_strptr = s1
strtok_p = 0
End If
t = lstrlen(s2)
If t = 0 then
'検索する分割文字が指定されていない
'この時に返る値が分からなかったのでとりあえず-1を返す。
strtok = -1
Exit Function
End If
strtok = strtok_strptr + strtok_p
t--'AB4.20未満(4.13以下)なら t = t - 1 と置き換えること。
Do
If strtok_strptr[strtok_p] = 0 then'終端なら
strtok = NULL
Exit Function
End If
For i = 0 To t
If strtok_strptr[strtok_p] = s2[i] then'分割文字に出会えたなら
'置換して
strtok_strptr[strtok_p] = 0
'後処理して
strtok_p++
'現在のstrtokの値を返す
Exit Function
End If
Next
strtok_p++'AB4.20未満なら strtok_p = strtok_p + 1 と置き換えること。
Loop
End Function
[/code][/hide]