2024年4月29日发(作者:)
VFP中如何获取变量内存指针
VFP下没有指针变量的声明,对于一些外部功能调用经常受到限制,在这里我
给大家介绍两种VFP下获取变量指针的方法:
1.调用VB的未公布函数VarPtr()
函数声明:DECLARE long VarPtr IN string Pstr
自从Basic出现以来,Windows就开始系统自带其支持库了,所以msvbvm60.
dll是系统自带链接库,大家可以 大胆调用。VFP的支持库要是也是系统自带该
多好啊,唉,后娘生的,没办法。
VFP Code:
DECLARE long VarPtr IN string Pstr
Pstr='VFP应用程式算法群-行者孙'
VarPtr(Pstr)
在VFP中应用VarPtr应注意的一点就是 当即定义变量当即取内存指针,不然
的话会受到VFP机制的影响得到的总是最后一次变量定义的内存指针,为了避
免这种情况的出现最好采用下里面的方式:
Pstr=''
VarPtr(Pstr)
Pstr='你好VFP'
VarPtr(Pstr)
2. HeapAlloc实现
API实现是一个申请-赋值的功能
VFP Code:
DECLARE integer GetProcessHeap IN WIN32API
DECLARE integer HeapAlloc IN WIN32API integer hHeap, integer dwFlag
s, integer dwBytes
DECLARE integer HeapFree IN WIN32API integer hHeap, integer dwFlag
s, integer lpMem
Pstr='VFP应用程式算法群-行者孙'
hProcHeap = GetProcessHeap()
AdrStr = HeapAlloc(hProcHeap,0,LEN(Pstr)) &&申请
SYS(2600,AdrStr,LEN(Pstr),Pstr)&&赋值
AdrStr
*HeapFree(hProcHeap)
3、StrDup实现
DECLARE INTEGER StrDup IN shlwapi STRING @lpsz
DECLARE INTEGER LocalFree IN kernel32 INTEGER hMem
m='123'
hMem= StrDup(@m)
? sys(2600,hMem,len(m))
LocalFree( hMem)
第2、3都是变相来取得字串的指针,但并不是真正的原始定义的字串的真正指
针,但这样对于我们在使用API函数时已经足够了。
发布评论