VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 将数据转换为内存二进制形式字符串(模拟CV?和MK?$两组函数)
发表评论(0)作者:, 平台:, 阅读:11136, 日期:2000-03-12
将数据转换为内存二进制形式字符串(模拟CV?和MK?$两组函数)

如 果 要 模 拟 这 些 函 数 , 可 以 使 用 下 面 的 代 码 :

Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _

hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

Function MKI$ (x As Integer)

temp$ = Space$(2)

hmemcpy ByVal temp$, x%, 2

MKI$ = temp$

End Function



Function CVI (x As String) As Integer

If Len(x) <> 2 Then

MsgBox "Illegal Function Call"

Stop

End If

hmemcpy temp%, ByVal x, 2

CVI = temp%

End Function



Function MKL$ (x As Long)

temp$ = Space$(4)

CopyMemory ByVal temp$, x&, 4

MKL$ = temp$

End Function



Function CVL (x As String) As Long

If Len(x) <> 4 Then

MsgBox "Illegal Function Call"

Stop

End If

CopyMemory temp&, ByVal x, 4

CVL = temp&

End Function



Function MKS$ (x As Single)

temp$ = Space$(4)

CopyMemory ByVal temp$, x!, 4

MKS$ = temp$

End Function



Function CVS (x As String) As Single

If Len(x) <> 4 Then

MsgBox "Illegal Function Call"

Stop

End If

CopyMemory temp!, ByVal x, 4

CVS = temp!

End Function



Function MKD$ (x As Double)

temp$ = Space$(8)

CopyMemory ByVal temp$, x, 8

MKD$ = temp$

End Function



Function CVD (x As String) As Double

If Len(x) <> 8 Then

MsgBox "Illegal Function Call"

Stop

End If

CopyMemory temp#, ByVal x, 8

CVD = temp#

End Function

另 外 , 这 些 函 数 基 本 上 是 同 随 机 文 件 读 写 有 关 的 。 VB

和 QB的 随 机 文 件 读 写 方 法 有 所 不 同 。 QB使 用 Field语 句 定 义

记 录 中 的 各 个 字 段 , 所 以 需 要 CV?和 MK?$两 组 函 数 。 而 VB中

使 用 用 户 定 义 类 型 来 定 义 记 录 中 的 各 个 字 段 , 自 然 无 须

CV?和 MK?$两 组 函 数 。 例 如 :

Type Record ' 定 义 用 户 自 定 义 数 据 类 型 。

ID As Integer

Name As String * 20

End Type



Dim MyRecord As Record ' 声 明 变 量 。

Open "TESTFILE" For Random As #1 Len = Len(MyRecord)