38.9.5.7 VBで文字列をリードする場合

VBで文字列をリードするには以下のような、2種類の方法があります。

1. VBでReadDeviceStrを利用し文字列をリードする場合

この場合、事前にリードした文字列の格納先のサイズを指定 (固定) する必要があります。

Public Sub Sample1()
 Dim strData As String * 10   '読み込むサイズを指定しているので正しい指定方法
 'Dim strData As String   '文字列のサイズを指定していないので誤った指定方法
 
 Dim IErr As Long
 
 IErr  = ReadDeviceStr("ReadDeviceStrD", "ReadDeviceVariantD", strData, 10)
 If IErr <> 0 Then
  MsgBox "Read Error = " & IErr
 Else
  MsgBox "Read String = " & strData
 End If
 
End Sub

2. VBでReadDeviceVariantを利用し文字列をリードする場合

事前にリードした文字列の格納先のサイズを指定しない場合はVariant型を利用します。

Public Sub Sample2()
 
 Dim IErr As Long
 Dim vrData As Variant   '読み込んだデータの格納先にVariant型を指定します
 IErr = ReadDeviceVariant("GP1", "LS100", vrData, 10, EASY_AppKind_Str)
 If IErr <> 0 Then
  MsgBox "Read Error = " & IErr
 Else
  MsgBox "Read String = " & vrData
 End If
End Sub

ここで気を付ける点として、WinGP SDKは文字列の完結にNULLを利用しています。そのため、上記の方法で取得した文字列に文字列完結のNULLがあれば、文字列を縮める必要があります。

文字列をNULLまで縮めるサンプル関数を示します。

Public Function TrimNull(strData As String) As String
 Dim i As Integer
 i = InStr(1, strData, Chr$(0), vbBinaryCompare)
 If 0 < i Then
  TrimNull = Left(strData, i - 1)
 Else
  TrimNull = strData
 End If
End Function