コード: 全て選択
#strict
#prompt
Declare Function strstr CDECL Lib "crtdll" (s1 As *Byte,s2 As *Byte) As *Byte
Dim a As *Byte,b As *Byte
a="12345678"
b=strstr(a,"456")
Print b As DWord-a As DWord
strstr関数の戻り値(変数b)は ポインタ or NULL となるはず(ここではポインタが返ることを期待したコード)なのですが、なぜか1が返ってきています。さらに、*ByteからLongに強制変換されているという警告も出ました。
CDECLだからかな、と思ったのですが
コード: 全て選択
#strict
#prompt
Declare Function strtok CDECL Lib "crtdll" (s1 As *Byte,s2 As *Byte) As *Byte
Dim a As *Byte,b As *Byte
a="123 45678 90123"
b=strtok(a," ")
While b<>NULL
Print MakeStr(b)
b=strtok(NULL," ")
Wend
同じようにポインタを返すCDECL関数なのに、strstrだけおかしいのはなぜでしょう…?
Ver 4.13.00では問題なく動作していたので不具合でしょうか?
Ver 4.22.00 Windows XP Home (SP2) で確認。