|
这个函数来自于外部Windows动态链接库 “kernel。DeclareFunctionWriteProfileString Lib Kernel (ByVallpApplicationNameAs Any, ByVal lpKeyName As Any, ByVal lpStringAsAny)接下来的函数调用了一个外部过程,位每个参数指定一个空值。这将使WriteProfileString充满它的内部高速缓冲区,并且WIN.INI的任何变化写到磁盘上。重要的对这个函数不正确的使用会引起一般性的保护故障或修改你的WIN.INI文件。 FunctionnFlushIniCache()nFlushIniCache= WriteProfileString (0&,0&, 0&)EndFunction如何从动态链接库中传递和接收无符号整型数常常有这样一种情况,要从外部动态链接库调用的过程中返回一个两个字节长的无符号整型数。然而AccessBasic不支持这种数据类型。正确地计算这种数据类型需要把它从一个无符号整型数转换程AccessBasic长数据类型。 AccessBasic整型数的范围使从- 32768到32767。一个无符号整型数的范围是从0到65535。AccessBasic用最明显的一位来放置数值的符号位,所以当数值超过 32767,第16位将被置成负数符号。要计算一个无符号整型数,你必须人工调整第16位。 从无符号整型数转换到AccessBasic长整型数或从AccessBasic的长整型转换成无符号整型数有两种方法。第一种方法用到了最基本的数学运算(65535被无符号整型值加或减)。第二种方法使用Bitwise操作。实际上,算术方法和Bitwise方法工作起来效果一样,只不过,算术方法可能可读性更强一些,而Bitwise方法在执行时可能更快一些。算术方法下面的lArithUintToInt(nUint)和lArithIntToUnint(lBytes)过程示范了如何使用转换无符号整型数的算术方法。第一个函数读进一个无符号整型数同时返回一个已经转变位长整型的值。第二个函数读入一个长整型值,然后返回一个转变成无符号整型的值。 以下是引用片段: FunctionlArithUintToInt(nUint As Integer) If nUint < 0 Then
lArithUintToInt = nUint + 65536Else
lArithUintToInt = nUintEnd IfEnd FunctionFunctionnArithIntToUnint(lBytes As Long)If lBytes > 32767 Then
nArithIntToUnint = lBytes - 65536Else
nArithIntToUnint = lBytesEnd IfEnd Function 按位操作方法 |
下面的nBWUintToInt(lBytes)和 lBWIntToUint(nUint)过程示范了如何使用Bitwise方法转换无符号整型数。第一个函数读进一个无符号整型数,然后返回一个已经转换成长整型的值。第二个函数读入一个长整型值,然后返回一个已经转换的无符号整型值。第二个函数中使用了提示框的语句是为了防止当传递到函数的值大于 64KB时会出现溢出信息。 以下是引用片段: 1010001111100000 (-23584)
AND 1111111111111111 (FFFF&)
1010001111100000 (41952)The functionsfollow: FunctionlBWIntToUint(nUint As Integer) lBWIntToUint = nUintAnd&HFFFF&End FunctionFunction nBWUintToInt(lBytes AsLong) DimnTemp As IntegerIf lBytes > 65535 Then
MsgBox You passed a value larger than 65535
Exit FunctionEnd IfnTemp = lBytes And &H7FFFnBWUintToInt=nTemp Or -(lBytes And&H8000) | EndFunction注意:& HFFFF&要求“&”在16进制数的末尾。这样能保证32位的16进制数通过16位的值表示出来。AccessBasic中的技巧在 MicrosoftAccess中有一些以前无正式文本的特性,它们允许你指定过程,这个过程是从一个from或report的属性工作表窗中调用的。要进入最小窗口,只需要同时按下SHIFT和F2键。
上一页 [1] [2] |