by たかせ » 2013年8月22日(木) 00:02
AB4とAB5ではStringのデータの仕様が異なるのでAB5に手直しする必要が発生する場合があります。
ここで確認したいのですが、
①変数Aは実質使用されていないので不要ですよね?
②変数BuffはじつはBuff1が正解ですよね?
次のように修正しました。
なおInStrをINSTRに変更しました。
Sub MainWnd_CommandButton1_Click()
'Dim A As String
Dim B As Long
'Dim Buff As BytePtr
Dim Buff1 As BytePtr
Dim Buff2[20] As Byte
Buff1 = calloc(20)
lstrcpy(Buff1 As VoidPtr, "0123456789")
lstrcpy(Buff2 As VoidPtr, "0123456789")
'A = MakeStr(Buff1)
'B = InStr( 1 , Buff1 , "34" )
'B = InStr( 1 , Buff2 , "45" )
'MsgBox 0, Buff1 , ""
B = INSTR( 1 , Buff1 , "34" )
B = INSTR( 1 , Buff2 , "45" )
MessageBox(NULL,Buff1,"Buff1の内容",MB_OK)
MessageBox(NULL,Str$(B),"Bの内容",MB_OK) 'INSTR結果確認用
free(Buff1)
End sub
/* InStrの代用 */
Function INSTR(I1POS As Long,I2STRP As *Byte,I3STRP As *Byte) AS Long
Dim POSP As *Byte
Dim PLEN As Long
POSP = strstr(I2STRP + I1POS,I3STRP)
If POSP = NULL Then
PLEN = 0
Else
PLEN = POSP - I2STRP + 1
End If
INSTR = PLEN
End Function
End
AB4/AB5共にコンパイルと実行が正常に行われました。
ただAB5では警告メッセージがでるので*Byteを*Charまたは*SByteにしたほうがよいかもしれません。
ちなみに strstrはCの標準関数です。
念のためご確認よろしくお願いたします。
AB4とAB5ではStringのデータの仕様が異なるのでAB5に手直しする必要が発生する場合があります。
ここで確認したいのですが、
①変数Aは実質使用されていないので不要ですよね?
②変数BuffはじつはBuff1が正解ですよね?
次のように修正しました。
なおInStrをINSTRに変更しました。
Sub MainWnd_CommandButton1_Click()
'Dim A As String
Dim B As Long
'Dim Buff As BytePtr
Dim Buff1 As BytePtr
Dim Buff2[20] As Byte
Buff1 = calloc(20)
lstrcpy(Buff1 As VoidPtr, "0123456789")
lstrcpy(Buff2 As VoidPtr, "0123456789")
'A = MakeStr(Buff1)
'B = InStr( 1 , Buff1 , "34" )
'B = InStr( 1 , Buff2 , "45" )
'MsgBox 0, Buff1 , ""
B = INSTR( 1 , Buff1 , "34" )
B = INSTR( 1 , Buff2 , "45" )
MessageBox(NULL,Buff1,"Buff1の内容",MB_OK)
MessageBox(NULL,Str$(B),"Bの内容",MB_OK) 'INSTR結果確認用
free(Buff1)
End sub
/* InStrの代用 */
Function INSTR(I1POS As Long,I2STRP As *Byte,I3STRP As *Byte) AS Long
Dim POSP As *Byte
Dim PLEN As Long
POSP = strstr(I2STRP + I1POS,I3STRP)
If POSP = NULL Then
PLEN = 0
Else
PLEN = POSP - I2STRP + 1
End If
INSTR = PLEN
End Function
End
AB4/AB5共にコンパイルと実行が正常に行われました。
ただAB5では警告メッセージがでるので*Byteを*Charまたは*SByteにしたほうがよいかもしれません。
ちなみに strstrはCの標準関数です。
念のためご確認よろしくお願いたします。