易语言调用DLL命令时有传址这个选项,下面讨论一下什么时候把传址打钩选中,什么时候不选中。
就是把参数的内存地址作为真正的参数传给API .
某些实际 Dll 库命令的参数需要接收数据地址,设置本属性为真可以确保将参数数据的地址传递过去。如不把传址钩上该保存的数据传递不到变量中去,导致调用失败。
“传址”的例程都是调用系统本身api中的dll时用到。
程序运行时,变量数据是存储在内存中地,我们引用某个变量,其实就是读取内存某地址中地数据。
在调用DLL地时候,我们有时候需要传递一些数据过去,如果勾选传址地话,就是将该变量地地址传递过去,
如果该DLL函数在执行地时候修改了该地址地内容,那么之后你调用该变量,变量数据就已经变了。懂意思了不?
如果不勾选传址,就是传递一个变量地副本,如果该DLL函数在执行地时候修改了该变量地内容,之后你调用该变量也是没有任何改变地,因为你没有传递变量地址。只是一个变量副本。
“传址”=“传变量的地址”。
“不传址”=传送变量的内容(数据)。
某些实际 Dll 库命令的参数需要接收数据地址,设置本属性为真可以确保将参数数据的地址传递过去。如果参数数据的类型为数组
、文本
、字节集
、用户定义数据类型
、库定义
数据类型,则无论此属性是否为真,都将传递数据地址。如果本属性为真且调用 Dll 命令时所传递过来数据的类型与相应位置处所定义参数的数据类型不一致但可以相互转换,则系统先分配一段临时内存空间,然后进行转换并将转换后的数据存放到该空间,最后将此内存空间的地址传递到实际的 Dll 库命令。