如何使用DLL取回原來的數據結構數組?
一、新建一個空的DLL并新建數據類型在編寫易語言小工具時,我們可能需要用到DLL傳遞數組。但易語言只支持返回常規(guī)類型,這時候就可以使用以下方法來取回原來的數據結構數組。首先,我們需要新建一個空的DLL
一、新建一個空的DLL并新建數據類型
在編寫易語言小工具時,我們可能需要用到DLL傳遞數組。但易語言只支持返回常規(guī)類型,這時候就可以使用以下方法來取回原來的數據結構數組。
首先,我們需要新建一個空的DLL,并在其中新建一個數據類型。例如:
```
.版本 2
.數據類型 數據類型1
.成員 a, 邏輯型
.成員 b, 小數型
.成員 c, 雙精度小數型
.成員 d, 長整數型
.成員 e, 整數型
.成員 f, 字節(jié)集
```
二、新建公開子程序并清除數組
之后,在DLL中新建一個公開的子程序。例如:
```
.版本 2
.支持庫 spec
.子程序 info, 整數型, 公開
.局部變量 x, 數據類型1, , "0"
.局部變量 a, 數據類型1
清除數組 (x)
a.a 真
a.b 3.1
a.c 3.1415926
a.d 81357707
a.f { 1, 2, 3 }
加入成員 (x, a)
加入成員 (x, a)
返回 (取變量地址 (x))
```
在此子程序中,我們需要清除數組,并為每個成員賦值。最后,將該數據類型添加到數組中并返回數組地址。
三、編譯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調用DLL的示例。注意:在使用ctypes庫時,需要定義與DLL中相同的數據類型。
總之,通過以上步驟,我們就可以實現在易語言中使用DLL取回原來的數據結構數組了。