Foxtable(狐表)用户栏目专家坐堂 → 请教如何定义 全局


  共有2063人关注过本帖树形打印复制链接

主题:请教如何定义 全局

帅哥哟,离线,有人找我吗?
ljh29206
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1361 积分:12049 威望:0 精华:0 注册:2012/3/5 11:32:00
请教如何定义 全局  发帖心情 Post By:2016/1/13 10:24:00 [只看该作者]

  1. Option Explicit  
  2.     Dim crc32Table(255) As Long  
  3.       
  4. Private Sub Command1_Click()  
  5.     Dim strHex As String  
  6.     Dim i As Long  
  7.     Dim buffer() As Byte  
  8.     strHex = "AA 44 12 1C 2A 00 02 20 48 00 00 00 9D B4 29 07 B0 40 F8 20 00 00 10 00 00 00 01 00 00 00 00 00 32 00 00 00 18 8E 3D F1 67 B2 43 40 86 C3 7B 0F 36 30 5D 40 00 00 60 95 E5 38 03 40 00 00 00 00 3D 00 00 00 6D 87 D4 3B 6D 87 D4 3B 60 61 7F 3C 30 30 30 34 00 00 80 3F 00 FC 6C 46 11 11 11 11 00 00 00 4B"  
  9.     'strHex = "AA 44 12 1C 2A 00 02 20 48 00 00 00 9D B4 29 07 10 4A F8 20 00 00 10 00 00 00 01 00 00 00 00 00 32 00 00 00 65 E4 5A DD 67 B2 43 40 56 19 C3 51 35 30 5D 40 00 00 E0 CC D9 26 03 40 00 00 00 00 3D 00 00 00 69 8C DA 3B 69 8C DA 3B B6 44 83 3C 30 30 30 34 00 00 00 00 00 2C 6D 46 11 11 11 11 00 00 00 4B"  
  10.     ReDim buffer(Len(strHex) \ 3)  
  11.     For i = 1 To Len(strHex) Step 3  
  12.         buffer((i - 1) / 3) = Val("&H" & Left(Mid(strHex, i, 3), 2))  
  13.     Next  
  14. '    Open "C:\ts.bpm" For Binary As #1  
  15. '        Put #1, , buffer  
  16. '    Close #1  
  17.     Text1 = Right("00" & Hex(crc32byt(buffer)), 8)  
  18.     'MsgBox "Ok!"  
  19. End Sub  
  20.   
  21. Public Function crc32byt(buf() As ByteAs Long  
  22.     Dim i As Long, iCRC As Long, lngA As Long, ret As Long  
  23.     Dim b() As Byte  
  24.     Dim bytT As Byte, bytC As Byte  
  25.     b = buf 'StrConv(item, vbFromUnicode)  
  26.     iCRC = &HFFFFFFFF  
  27.     InitCrc32  
  28.     For i = 0 To UBound(b)  
  29.         bytC = b(i)  
  30.         bytT = (iCRC And &HFF) Xor bytC  
  31.         lngA = ((iCRC And &HFFFFFF00) / &H100) And &HFFFFFF  
  32.         iCRC = lngA Xor crc32Table(bytT)  
  33.     Next  
  34.     ret = iCRC Xor &HFFFFFFFF  
  35.     crc32byt = ret  
  36. End Function  
  37.   
  38. 'CRC32 Table此段代码是CRC32表  
  39. Public Function InitCrc32(Optional ByVal Seed As Long = &HEDB88320, Optional ByVal Precondition As Long = &HFFFFFFFF) As Long  
  40.     Dim i As Integer, j As Integer, Crc32 As Long, Temp As Long  
  41.     For i = 0 To 255  
  42.         Crc32 = i  
  43.         For j = 0 To 7  
  44.             Temp = ((Crc32 And &HFFFFFFFE) / &H2) And &H7FFFFFFF  
  45.             If (Crc32 And &H1) Then Crc32 = Temp Xor Seed Else Crc32 = Temp  
  46.         Next  
  47.         crc32Table(i) = Crc32  
  48.     Next  
  49.     InitCrc32 = Precondition  
  50. End Function  

不是很懂 ,请教以上代码 怎么放入  狐表里面,
连接位置
http://blog.csdn.net/zdingyun/article/details/46839779

我试过直接放入  全局代码 不行。

还有 怎么调用 函数
[此贴子已经被作者于2016/1/13 10:24:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/13 10:38:00 [只看该作者]

去掉:Option Explicit  

Private Sub Command1_Click()  是按钮事件,把里面的代码放到一个窗口的按钮事件中

另外2个函数可以放到全局代码中

 回到顶部
帅哥哟,离线,有人找我吗?
ljh29206
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1361 积分:12049 威望:0 精华:0 注册:2012/3/5 11:32:00
  发帖心情 Post By:2016/1/13 13:57:00 [只看该作者]

斑竹

在请教一下
 Function CRC16(data() As Byte) As String
   Dim CRC16Lo As Byte, CRC16Hi As Byte   'CRC寄存器
   Dim CL As Byte, CH As Byte        '多项式码&HA001
   Dim SaveHi As Byte, SaveLo As Byte
   Dim i As Integer
   Dim Flag As Integer
   CRC16Lo = &HFF
   CRC16Hi = &HFF
   CL = &H1
   CH = &HA0
   For i = 0 To UBound(data)
    CRC16Lo = CRC16Lo Xor data(i) '每一个数据与CRC寄存器进行异或
    For Flag = 0 To 7
     SaveHi = CRC16Hi
     SaveLo = CRC16Lo
     CRC16Hi = CRC16Hi \ 2      '高位右移一位
     CRC16Lo = CRC16Lo \ 2      '低位右移一位
     If ((SaveHi And &H1) = &H1) Then 'VB下的CRC校验程序高位字节最后一位为1
      CRC16Lo = CRC16Lo Or &H80   '则低位字节右移后前面补1
     End If              '否则自动补0
     If ((SaveLo And &H1) = &H1) Then 'VB下的CRC校验程序LSB为1,则与多项式码进行异或
      CRC16Hi = CRC16Hi Xor CH
      CRC16Lo = CRC16Lo Xor CL
     End If
    Next Flag
   Next i
   Dim ReturnData(1) As Byte
   ReturnData(0) = CRC16Hi       'CRC高位
   ReturnData(1) = CRC16Lo       'CRC低位
   CRC16 = ReturnData
  End Function

在运行到  CRC16 = ReturnData 提示不能转化为1维数组  这个该怎么改呢?

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/13 14:45:00 [只看该作者]

改函数定义的返回值

Function CRC16(data() As Byte) As byte()

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/16 11:36:00 [只看该作者]


 回到顶部