首页 > 生活 > VFP下变量指针的获取

VFP下变量指针的获取

2019年5月15日

VFP下没有指针变量的声明,对于一些外部功能调用经常受到限制,在这里我给大家介绍两种VFP下获取变量指针的方法:


1.调用VB的未公布函数VarPtr()
函数声明:DECLARE long VarPtr IN msvbvm60.dll string Pstr
自从Basic出现以来,Windows就开始系统自带其支持库了,所以msvbvm60.dll是系统自带链接库,大家可以 大胆调用。VFP的支持库要是也是系统自带该多好啊,唉,后娘生的,没办法。
VFP Code:
DECLARE long VarPtr IN msvbvm60.dll string Pstr
Pstr=’VFP应用程式
群-行者孙’
? VarPtr(Pstr)
在VFP中应用VarPtr应注意的一点就是 当即定义变量当即取内存指针,不然的话会受到VFP机制的影响得到的总是最后一次变量定义的内存指针,为了避免这种情况的出现最好采用下里面的方式:
Pstr=”
? VarPtr(Pstr)
Pstr=’你好VFP’
? VarPtr(Pstr)

  1. HeapAlloc实现
    API实现是一个申请-赋值的功能
    VFP Code:
    DECLARE integer GetProcessHeap IN WIN32API
    DECLARE integer HeapAlloc IN WIN32API integer hHeap, integer dwFlags, integer dwBytes
    DECLARE integer HeapFree IN WIN32API integer hHeap, integer dwFlags, 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函数时已经足够了。

生活 浏览10 次

本文的评论功能被关闭了.