我們知道pb中不支持指針,但我們在使用WIN32 API和調(diào)用一些dll中的外部函數(shù)時(shí)候,經(jīng)常會與其打些交道,所以這里將相關(guān)的一些技巧收集整理起來。
1、根據(jù)字符串地址得到字符串
完全通過pb自帶的函數(shù)String就可以實(shí)現(xiàn),函數(shù)的語法為String ( data, { format } ),當(dāng)我們將變量地址作為Data參數(shù),字符串“Address”作為format參數(shù),函數(shù)的返回值就是我們需要的字符串。這是種未公開(呵呵,pb的幫助中找不到),但被廣泛使用的方法。
例:string ls_tmp
ls_tmp =string(hStrData,"Address")
2、得到pb中某個(gè)字符串變量的地址
這次,單純依靠pb自身是行不通了,需要請來Win Api函數(shù)幫忙了:
主人公:Function long lstrcpy(ref string Destination, ref string Source) library "kernel32.dll"
原型:
The lstrcpy function copies a string to a buffer.
LPTSTR lstrcpy(
LPTSTR lpString1, // address of buffer
LPCTSTR lpString2 // address of string to copy
);
Return Values:If the function succeeds, the return value is a pointer to the buffer.
看我怎么大顯身手:
定義實(shí)例變量:String is_dst
string ls_src
long ll_address
ls_src= "test me"
ls_dst =space(255)
ll_address=lstrcpy(ls_dst,ls_src)
麻煩是麻煩點(diǎn),不過終于知道你藏身在ll_address那里了。
1、根據(jù)字符串地址得到字符串
完全通過pb自帶的函數(shù)String就可以實(shí)現(xiàn),函數(shù)的語法為String ( data, { format } ),當(dāng)我們將變量地址作為Data參數(shù),字符串“Address”作為format參數(shù),函數(shù)的返回值就是我們需要的字符串。這是種未公開(呵呵,pb的幫助中找不到),但被廣泛使用的方法。
例:string ls_tmp
ls_tmp =string(hStrData,"Address")
2、得到pb中某個(gè)字符串變量的地址
這次,單純依靠pb自身是行不通了,需要請來Win Api函數(shù)幫忙了:
主人公:Function long lstrcpy(ref string Destination, ref string Source) library "kernel32.dll"
原型:
The lstrcpy function copies a string to a buffer.
LPTSTR lstrcpy(
LPTSTR lpString1, // address of buffer
LPCTSTR lpString2 // address of string to copy
);
Return Values:If the function succeeds, the return value is a pointer to the buffer.
看我怎么大顯身手:
定義實(shí)例變量:String is_dst
string ls_src
long ll_address
ls_src= "test me"
ls_dst =space(255)
ll_address=lstrcpy(ls_dst,ls_src)
麻煩是麻煩點(diǎn),不過終于知道你藏身在ll_address那里了。