搜索
查看: 3541|回复: 6

API声明和调用问题

[复制链接]

3

主题

8

帖子

48

积分

新手入门

Rank: 1

积分
48
发表于 2012-9-6 08:44:21 | 显示全部楼层 |阅读模式
看了api手册的例子,没搞懂.
GetComputerName = ::Kernel32.api("GetComputerNameA","int(str &lpBuffer,int &nSize)"
)
var
ok,name,size = GetComputerName(16, 16)
io.open()
if(ok)io.print(name)
函数原型是个缓冲区地址,为什么调用的时候可以用16这个数值?
回复

使用道具 举报

4

主题

874

帖子

4704

积分

荣誉会员

Rank: 8Rank: 8

积分
4704
发表于 2012-9-6 09:15:23 | 显示全部楼层

str & 或者 string & 类型的参数, 实参可以使用一个指定缓冲区长度的数值,aardio将会自动分配所需要缓冲区。 参考: [url]ht

str & 或者 string & 类型的参数,
实参可以使用一个指定缓冲区长度的数值,aardio将会自动分配所需要缓冲区。

参考:
http://bbs.aardio.com/doc/refere ... l/raw/datatype.html


回复

使用道具 举报

4

主题

874

帖子

4704

积分

荣誉会员

Rank: 8Rank: 8

积分
4704
发表于 2012-9-6 09:18:00 | 显示全部楼层

[b][size=4]string & [/size][/b] 用于str &二进制字符串 [b][size=4]str & [/size][/b] 用于获取

string & 用于str &二进制字符串
str & 用于获取纯文本字符串( 以'\0'为终结符  )
回复

使用道具 举报

4

主题

874

帖子

4704

积分

荣誉会员

Rank: 8Rank: 8

积分
4704
发表于 2012-9-6 09:21:06 | 显示全部楼层

也可以自已分配内存: GetComputerName = ::Kernel32.api([color=#800000]"GetComputerNameA"

也可以自已分配内存:

GetComputerName = ::Kernel32.api("GetComputerNameA","int(pointer lpBuffer,int &nSize)")

var buffer = raw.buffer(16);
var ok,size = GetComputerName(buffer, #buffer)

io.open()

if( ok ){
   
var name = raw.str(buffer);
    io.print( name )
}
回复

使用道具 举报

3

主题

8

帖子

48

积分

新手入门

Rank: 1

积分
48
 楼主| 发表于 2012-9-6 09:36:34 | 显示全部楼层

非常感谢!!!,还是最后这个好理解些,直接传数值太抽象了!!!

非常感谢!!!,还是最后这个好理解些,直接传数值太抽象了!!!
回复

使用道具 举报

53

主题

277

帖子

1741

积分

四级会员

Rank: 6Rank: 6

积分
1741
发表于 2012-11-7 12:41:37 | 显示全部楼层

mark ...

mark ...
回复

使用道具 举报

0

主题

6

帖子

63

积分

一级会员

Rank: 2

积分
63
发表于 2017-7-27 08:33:35 | 显示全部楼层
不争 发表于 2012-9-6 09:21
也可以自已分配内存:

GetComputerName = ::Kernel32.api("GetComputerNameA","int(pointer lpBuffer,in ...

您的回复,解决了我调用delphi封装的dll的问题。非常感谢,自己弄了好几天没有搞定。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-15 15:52 , Processed in 0.093750 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表