易語言里的 “呼叫子程式”如何在Delphi里實作?
在易的解釋:
呼叫格式: 〈邏輯型〉 呼叫子程式 (通用型 子程式指標或子程式地址,[通用型 保留引數],[通用型變數 回傳值],[通用型 引數],... ) - 特殊功能支持庫->附加
英文名稱:CallFunction
以stdcall方式(即WINAPI或Pascal)呼叫指定的子程式(子程式指標,或子程式地址)并取回被呼叫子程式的回傳值,支持任意多個引數,引數支持除位元組集之外的其它所有基本資料型別。呼叫子程式之前,您需要明確地知道它的引數型別和引數個數,以及回傳值型別。本命令回傳“真”僅表示呼叫程序中沒有出例外情況,并不表示被呼叫的子程式執行成功。本命令為高級命令。命令引數表中最后一個引數可以被重復添加。
引數<1>的名稱為“子程式指標或子程式地址”,型別為“通用型(all)”。提示:在子程式名稱前加“&”即可得到該子程式的“子程式指標”,如“&子程式1”就是“子程式1”的子程式指標;子程式地址可通過本庫中的“取子程式地址()”命令獲取,“到整數(&子程式1)”回傳的也是子程式1的執行地址,也可通過Windows系統API函式“GetProcAddress()”獲取,或由外部程式傳入。
引數<2>的名稱為“保留引數”,型別為“通用型(all)”,可以被省略。
引數<3>的名稱為“回傳值”,型別為“通用型(all)”,可以被省略,提供引數資料時只能提供變數。本引數用于接收子程式被呼叫后的回傳值;如果該子程式沒有回傳值或不需要接識訓傳值,請省略本引數。提供本引數時,請務必提供準確的資料型別,否則所得結果可能不正確。
引數<4>的名稱為“引數”,型別為“通用型(all)”,可以被省略。本引數值將作為引數傳入被呼叫子程式。如果相應子程式沒有引數,請省略本引數;如果相應子程式有多個引數,請重復提供本引數。請務必提供準確的引數型別和引數個數,否則后果不可預知。
uj5u.com熱心網友回復:
通過獲取一個程序 或 函式的指標,呼叫這個命令就可以運行其程序 或 函式!比如:
procedure ceshi;
begin
Showmessage('運行')
end;
呼叫子程式(@ceshi);
這樣方便以后在DLL中運行EXE程式里的函式了!
uj5u.com熱心網友回復:
Delphi里呼叫子程式直接寫子程式名。這是想說易語言如何呼叫Delphi的子程式吧。uj5u.com熱心網友回復:
不是的,我是這樣構思的,EXE把自身子程式的地址指標通過引數傳給DLL,DLL直接運行這個地址指標,就是說運行這個子程式uj5u.com熱心網友回復:
不是的,我是這樣構思的,EXE把自身子程式的地址指標通過引數傳給DLL,DLL直接運行這個地址指標,就是說運行這個子程式
uj5u.com熱心網友回復:
就是個回呼,Delphi可以實作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58220.html
上一篇:資料記錄 查找
