molinchz 发表于 2021-11-16 11:58

VBA API调用问题求解

请教下大佬,
H2里面是1000
Public Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long) 'EXCEL申明
CopyMemory(EndFile(41), CSng(Range("H2")), 4)       
得到的结果 不是000003e8   而是00007a44

这是结果是怎样来的

biqiang 发表于 2021-11-16 12:49

龍謹 发表于 2021-11-16 13:34

学习了,之前还真不知道,VBA可以调用API。

JuncoJet 发表于 2021-11-16 13:40

EXCEL为啥要直接操作内存,很奇怪的代码

molinchz 发表于 2021-11-16 13:47

biqiang 发表于 2021-11-16 12:49
把CSng换成CLng。CSng是转换为单精度数,在内存中其存储格式与长整型是不一样的。而CopyMemory是按地址传递 ...

我想用python 来写这句和算法,怎样做,真不知这个API 是怎样算的得到 这个值的

molinchz 发表于 2021-11-16 14:07

biqiang 发表于 2021-11-16 12:49
把CSng换成CLng。CSng是转换为单精度数,在内存中其存储格式与长整型是不一样的。而CopyMemory是按地址传递 ...

复制过去的整数 是03e8吗 ,怎么算也算不出447A0000

JuncoJet 发表于 2021-11-16 14:24

好像知道你要干嘛了,
看你代码你就拷贝4字节类型到一个数组而已,相当去强制转换

JuncoJet 发表于 2021-11-16 14:35

biqiang 发表于 2021-11-16 14:37

biqiang 发表于 2021-11-16 14:48

页: [1] 2
查看完整版本: VBA API调用问题求解