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の標準関数です。
念のためご確認よろしくお願いたします。