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函数时已经足够了。