dim porti as long
Private Sub EDSock_SwitchChange(ByVal ConnectID As Long, ByVal PortNum As Long, ByVal Value As Long)
    'For PortNum = 1 To 16
    PortNum = Porti + 1
        
        '输入端口短路
            If Value = 1 And iPhotoIndex(PortNum - 1) = Value Then
        
            ' 加载 红灯 显示状态
                picinput(PortNum - 1).Picture = LoadPicture("C:\David 's bag\Item\R.bmp")
                iPhotoIndex(PortNum - 1) = Value - 1
            
            ElseIf Value = 0 And iPhotoIndex(PortNum - 1) = Value Then
                 '断路状态
                picinput(PortNum - 1).Picture = LoadPicture("C:\David 's bag\Item\Z.bmp")
                iPhotoIndex(PortNum - 1) = Value + 1
      
            End If
    'Next PortNum
    
End Sub运行时提示说类型错误.怎么回事?

解决方案 »

  1.   

    这个函数是外部SOCKET控件自带的.只有用这个控件的时候才会调用!
      

  2.   

    是不是 iPhotoIndex() 定义成 String 型了?
      

  3.   

    Private Sub EDSock_SwitchChange(ByVal ConnectID As Long, ByVal PortNum As Long, ByVal Value As Long)
        'For PortNum = 1 To 16
         dim porti as long
        PortNum = Porti + 1
            
            '输入端口短路
                If Value = 1 And iPhotoIndex(PortNum - 1) = Value Then
            
                ' 加载 红灯 显示状态
                    picinput(PortNum - 1).Picture = LoadPicture("C:\David 's bag\Item\R.bmp")
                    iPhotoIndex(PortNum - 1) = Value - 1
                
                ElseIf Value = 0 And iPhotoIndex(PortNum - 1) = Value Then
                     '断路状态
                    picinput(PortNum - 1).Picture = LoadPicture("C:\David 's bag\Item\Z.bmp")
                    iPhotoIndex(PortNum - 1) = Value + 1
          
                End If
        'Next PortNum
        
    End Sub
    要把dim porti as long放到过程里去才行
    你没把他放到过程中肯定报错,因为没声明
      

  4.   

    // picinput(PortNum - 1).Picture = LoadPicture("C:\David 's bag\Item\R.bmp")类似这样的代码,前面要加个set,即:
    set picinput(PortNum - 1).Picture = LoadPicture("C:\David 's bag\Item\R.bmp")