VB 6.0 利用CopyMemory实现 指针功能

工作需要,要用VB写一个接口程序,其中要把浮点型转成Byte数组,用到了一个API,先记录下来,以后C#中可能会用到同样的功能。

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As LongByVal Source As LongByVal Length As Long)

浮点转换Byte函数

Private Function FloatToBytes(value As SingleAs Byte()
    
Dim returnByte(4As Byte
    
Dim sPtr As Long, bPtr As Long
    sPtr 
= VarPtr(value)
    bPtr 
= VarPtr(returnByte(1))
    CopyMemory bPtr, sPtr, 
4
    FloatToBytes 
= returnByte
End Function

Byte转换浮点函数
Private Function BytesToFloat(bytes() As ByteAs Single
    
Dim returnValue As Single
    
Dim sPtr As Long, bPtr As Long
    sPtr 
= VarPtr(returnValue)
    bPtr 
= VarPtr(bytes(1))
    CopyMemory sPtr, 
ByVal bPtr, 4
    BytesToFloat 
= returnValue
End Function

转载于:https://www.cnblogs.com/XingfuStar/archive/2007/09/10/888417.html

VB构建快速访问的指针 VB构建快速访问的指针,不再需要用到copymemory 阅读详情

相关推荐

VB6.0 动态API调用实战:实现系统级操作

本文还有配套的精品资源,点击获取 简介:在VB6.0中,动态调用API函数是一种利用Windows底层功能的有效技术。本教程通过实例演示如何使用API函数实现屏幕像素获取、进程控制、消息提示和系统音效等操作。我们将通过 Declare 语句声明和调用API函数,并学习错误处理和类型转换。教程内容涵盖GetPixel、OpenProcess、MessageBox...

weixin_35189483的博客 1570

vb结构体与数组间拷贝数据

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Type uS a As Long b As Double c As String * 48 End Ty...

dcw0402的专栏 1100

VB6中用CopyMemory

VB6中用CopyMemory拷贝字符串的种种猫腻

VB6中的指针模块(VB指针

////既然决定要重新启用这个blog,那么就找点以前的东西贴上来充实下内容吧^_*VB6中的指针模块关键词: VB   VB6   指针   模块很久以前写的一个可以在VB6实现指针的模块,用于对大量密集数据进行操作(比如per Pixel的图像运算)。标准支持Byte,Integer,Long,Boolean,四种数据类型的指针,当然还可以很容易修改成为其它类型。 方便程度还

sandy_zc_1的专栏 3193

VB利用CopyMemory使用指针

  一、指针是什么?   不需要去找什么标准的定义,它就是一个32位整数,在C语言和在VB里都可以用Long类型来表示。在32位Windows平台下它和普通的32位长整型数没有什么不同,只不过它的值是一个内存地址,正是因为这个整数象针一样指向一个内存地址,所以就有了指针的概念。   有统计表明,很大一部分程序缺陷和内存的错误访问有关。正是因为指针直接和内存打交道,所以指针一直以来被看成一个危险的东

wjb9921的专栏 2821

linux网络编程 copymemory,在VB6中用CopyMemory拷贝字符串的种种猫腻(一)

本文来自此帖的冗长讨论,感谢Tiger_Zhao的全程指点和陈辉、阿勇、马云剑等很多朋友的热心参与。本文其他部分在:(二)、(三)、(四)。话说VB6是个很认真细致的妈妈,它会悄没声地帮你做很多事。今天我们来说的是VB6在API调用时自动对字符串参数进行转换的“好人好事”。第一节 体贴的VB妈妈我们知道,在VB6中字符串都是以Unicode编码存在的,而Windows API函数中很多时候用的是A...

weixin_42116585的博客 653

VB6中用CopyMemory拷贝字符串的种种猫腻(三)

版权声明:可以任意转载,转载时请务必以超链接形式标明如下文章原始出处和作者信息及本声明 作者:xixi 出处:http://blog.csdn.net/slowgrace/archive/2009/09/14/4550293.aspx本文来自此帖的冗长讨论,感谢Tiger_Zhao的全程指点和陈辉、阿勇、马云剑等很多朋友的热心参与。本文其他部分在:(一)、(二)、(四)。3.4 King0

4539

VB6中用CopyMemory拷贝字符串的种种猫腻(二)

版权声明:可以任意转载,转载时请务必以超链接形式标明如下文章原始出处和作者信息及本声明 作者:xixi 出处:http://blog.csdn.net/slowgrace/archive/2009/09/14/4550116.aspx本文来自此帖的冗长讨论,感谢Tiger_Zhao的全程指点和陈辉、阿勇、马云剑等很多朋友的热心参与。本文其他部分在:(一)、(三)、(四)。第三节 经典错误代

5401

VBcopymemory的有关问题

dim a() as long dim b() as bytecopymemory b(0),byval "1234",4 copymemory byval varptr(a(0)),1234,4在 VB 中处于安全考虑,不能直接访问内存,但你可以使用 CopyMemory(RtlMoveMemory) 的 API 来复制指定区域的内存,其具体声明如下:Declare Sub Copy...

demonzsmj12315的博客 498

vb6.0 判断数组为空

方法一:Error方法 就是采用通用的错误捕获功能 On Error Goto 行号       '遇到错误,转到行号处处理 On Error Resume Next '忽略错误,继续执行 On Error Goto 0           '强制取消错误捕获功能 Function IsNotEmpty(ByVal sArray As Variant) As Boolean '判断数组是

karl_han的专栏 7146

VB利用CopyMemory使用指针[转]

 不需要去找什么标准的定义,它就是一个32位整数,在C语言和在VB里都可以用Long类型来表示。在32位Windows平台下它和普通的32位长整型数没有什么不同,只不过它的值是一个内存地址,正是因为这个整数象针一样指向一个内存地址,所以就有了指针的概念。  有统计表明,很大一部分程序缺陷和内存的错误访问有关。正是因为指针直接和内存打交道,所以指针一直以来被看成一个危险的东西。以至于不少语言,如

学无止境 796

一次实验,弄明白了VB6中的字符串的存储格式

    虽然看过《老兵新传》《VisualBasic win32编程》中介绍vb字符串的内容,但依旧对vb中的字符串如何存储不十分清楚,不像对C语言中的字符串那样,在头脑中有一个清晰的轮廓。同时对varptr(),strptr()的理解也只限于书上的那些例子。直到有一天,突然灵光一闪,动手写了下面的程序,当程序执行的结果出现时,我也终于恍然大悟。Option Explicit Private De...

kingdragonfly的博客 1468

VB指针CopyMemory

体会ByVal和ByRef Dim k As Long CopyMemory ByVal VarPtr(k), 40000, 4 等同于k=40000;从保存常数40000(缺省ByRef)的临时变量处(地址)拷贝4个字节到变量k所在的内存中。 CopyMemory ByVal VarPtr(k), ByVal 40000, 4 k=(40000的地址);从地址40000拷贝4个字节...

weixin_34220179的博客 217

一个VB数组指针

        顾名思义了,这个代码就是将指定的内存地址绑定到一个VB数组,即COM中的SafeArray上。所谓绑定,是指在使用该内存地址之前,并不需要申请相应的本地内存缓冲区,也不需要进行内存复制,只是根据该地址凭空构造一个VB数组,并将数组的真实数据地址指向该地址。当然,该类的功能完全可以用CopyMemory函数直接代替。为什么又写了这个类呢?主要还是为了进一步展示VB中数组的内幕,同...

miaozk2006的专栏 840
上一篇: Sql Server 2000 中 将 0,1 字段,换成 是,否 的查询语句
下一篇: [原创]简单的XML配置文件读写类
Liumei_1122
博客等级 码龄12年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值