ページ 1 / 1
strstr, strtok に代わるもの
Posted: 2007年7月04日(水) 21:35
by M.S.
今、C のものをみながらコードを書いているのですが、
「strstr」、「strtok」というものが出てきました。
AB ではそのまま使えないので、
それらに代わるものがあるのかヘルプセンターで検索してみましたが、
該当するものが見つかりませんでした。
AB には、これらに代わるものはあるのでしょうか?
Posted: 2007年7月04日(水) 22:03
by konisi
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
Posted: 2007年7月06日(金) 18:08
by M.S.
konisi さん、ありがとうございます。
載せていただいたコードを早速使ってみようと思います。
strstr ですが、
昨日「もう VC ランタイム使って宣言しちゃえ」と思い、
4.24 で宣言してコンパイルすると、
「strstr はすでに宣言されています」というエラーが出てきたので、
ちょっと焦りました。
というわけで、4.24 では既に strstr が存在するようです。