首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VB.NET OPC 寫入類型錯誤:句柄數組聲明應為 Integer 而非 System.Array

     編輯:程式設計綜合問答

錯誤代碼

Dim lHandle(U_NUMITEMS) As System.Array ' 錯誤聲明
lHandle(i) = MyItemServerHandles2(NumItemsW) ' MyItemServerHandles2 是 Integer 陣列

報錯:無法將類型為 System.Int32 的對象強制轉換為類型 System.Array

原因

System.Array 是抽象基類,不能直接作為元素類型。MyItemServerHandles2 實際是 Integer()(即 Int32[])。

正確聲明

Dim lHandle(U_NUMITEMS) As Integer ' 或 As Int32
' 或者
Dim lHandle() As Integer = New Integer(U_NUMITEMS) {}

完整修正片段

Private Sub PLC_AsyncWrite(ByVal NumItemsW As Integer, ByRef ItemValuesW() As Object, ByRef MyErrors As Array)
    If MyGroup2 Is Nothing OrElse MyGroup2.OPCItems.Count = 0 Then Exit Sub
    
    Dim lHandle(U_NUMITEMS) As Integer
    For i = 1 To 30
        lHandle(i) = MyItemServerHandles2(NumItemsW) ' 現在類型匹配
        MyGroup2.AsyncWrite(1, lHandle(i), ItemValuesW, MyErrors, lTransID_Rd2, lCancelID_Rd2)
    Next
End Sub

補充

  • Option Strict On 可在編譯期捕獲此類類型不匹配。
  • OPC 句柄通常為 32 位整數,Integer (Int32) 完全足夠。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved