如何使用DLL取回原來的數(shù)據(jù)結(jié)構(gòu)數(shù)組?
一、新建一個(gè)空的DLL并新建數(shù)據(jù)類型在編寫易語言小工具時(shí),我們可能需要用到DLL傳遞數(shù)組。但易語言只支持返回常規(guī)類型,這時(shí)候就可以使用以下方法來取回原來的數(shù)據(jù)結(jié)構(gòu)數(shù)組。首先,我們需要新建一個(gè)空的DLL
一、新建一個(gè)空的DLL并新建數(shù)據(jù)類型
在編寫易語言小工具時(shí),我們可能需要用到DLL傳遞數(shù)組。但易語言只支持返回常規(guī)類型,這時(shí)候就可以使用以下方法來取回原來的數(shù)據(jù)結(jié)構(gòu)數(shù)組。
首先,我們需要新建一個(gè)空的DLL,并在其中新建一個(gè)數(shù)據(jù)類型。例如:
```
.版本 2
.數(shù)據(jù)類型 數(shù)據(jù)類型1
.成員 a, 邏輯型
.成員 b, 小數(shù)型
.成員 c, 雙精度小數(shù)型
.成員 d, 長整數(shù)型
.成員 e, 整數(shù)型
.成員 f, 字節(jié)集
```
二、新建公開子程序并清除數(shù)組
之后,在DLL中新建一個(gè)公開的子程序。例如:
```
.版本 2
.支持庫 spec
.子程序 info, 整數(shù)型, 公開
.局部變量 x, 數(shù)據(jù)類型1, , "0"
.局部變量 a, 數(shù)據(jù)類型1
清除數(shù)組 (x)
a.a 真
a.b 3.1
a.c 3.1415926
a.d 81357707
a.f { 1, 2, 3 }
加入成員 (x, a)
加入成員 (x, a)
返回 (取變量地址 (x))
```
在此子程序中,我們需要清除數(shù)組,并為每個(gè)成員賦值。最后,將該數(shù)據(jù)類型添加到數(shù)組中并返回?cái)?shù)組地址。
三、編譯DLL并使用
最后,我們需要將新建的DLL編譯出來,并在易語言中使用它。使用方法可參考以下代碼:
```
coding:utf-8
from ctypes import *
class DataType1(Structure):
_fields_ [("a", c_bool), ("b", c_float), ("c", c_double), ("d", c_long),
("e", c_int), ("f", c_char * 3)]
def main():
dll cdll.LoadLibrary("test.dll")替換成你的DLL文件名
POINTER(DataType1)
array ()
print(array[0].a)
print(array[0].b)
print(array[0].c)
print(array[0].d)
print(array[0].e)
print(array[0].f)
if __name__ "__main__":
main()
```
以上代碼是使用Python調(diào)用DLL的示例。注意:在使用ctypes庫時(shí),需要定義與DLL中相同的數(shù)據(jù)類型。
總之,通過以上步驟,我們就可以實(shí)現(xiàn)在易語言中使用DLL取回原來的數(shù)據(jù)結(jié)構(gòu)數(shù)組了。