全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2260
推到 Plurk!
推到 Facebook!

關於 建立DLL檔與使用DLL檔的程式範例 的問題

缺席
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-01 23:21:26 IP:61.13.xxx.xxx 未訂閱
請問版版 我在DllLib程式中僅加入 一個funation 想要傳回我要的時間而已 主程式在呼叫時,值可以傳回,但是傳回的同時...卻一直出現下面那樣ㄉ錯誤訊息... invalid pointer operation ...請問版版這是那樣的問題呢 .....
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-02 14:04:35 IP:61.66.xxx.xxx 未訂閱
引言: 請問版版 我在DllLib程式中僅加入 一個funation 想要傳回我要的時間而已 主程式在呼叫時,值可以傳回,但是傳回的同時...卻一直出現下面那樣ㄉ錯誤訊息... invalid pointer operation ...請問版版這是那樣的問題呢 .....
可否 post 程式上來看看!
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-02 19:57:25 IP:218.5.xxx.xxx 未訂閱
出現這種異常的原因通常是DLL單元中String類型的參數引起的,在每個DLL單元都會自動加進一段注釋,就是說明這個問題的,解決方法有二: 1,更改參數的String類型為PChar或者ShortString; 2,在DLL單元Uses部分的最前面加上Uses ShareMem,並且在應用程式的DPR單元也是最前面的Uses部分加上Uses ShareMem即可(需要注意的是你的程式在沒有安裝Delphi環境下運行需要一起分發Borlndmm.dll文件,該文件在$Delphi\Bin文件夾下)
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-02 20:45:15 IP:61.13.xxx.xxx 未訂閱
主程式 function KT(Title:string):string; far; external 'DllLib.DLL'; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:=KT('s'); end; ************************************************************ ****以下為 DllLib.DLL 部分***************** library DllLib; uses ShareMem, UConfirm in 'UConfirm.pas' {FormConfirm}, UMessage in 'UMessage.pas' {FormMessage}; exports KTConfirm,KTMessage,KTWarnMessage,KTStopMessage,kt; begin end *********************************************** unit UConfirm; ..... ..... function KT(Title:string):string;export; //輸出函數 .. .. function KT(Title:string):string; begin result:=formatdatetime('yyyymmddhhnnss',now); end; *************** POST 程式如上******************* 另外 Rain 前輩 我也有試過你的方式 將欲傳遞參數string 改成 pchar 或是 ShortString 都不行說..一樣是同樣的錯誤訊息, 也有uses ShareMem 一樣不行... 怎會這樣呢....
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-02 20:58:47 IP:61.13.xxx.xxx 未訂閱
Rain 前輩 另一個問題想請問你說,, 呼叫 dll 時候傳回會有錯誤訊息,是沒錯 可是當我關閉主程式時,卻出現另一種錯誤訊息 錯誤訊息如下:: 應用程式發生例外 不明的軟體例外錯誤(0x0eedfade)於位置0x77d6f142 及 Runtimer error 217 at 00416BE8 這兩種訊息 不過我發現主程式有uses ShareMem 時 傳回值沒有問題,可是關閉主程式卻是發生上述錯誤訊息 如果沒uses ShareMem 時 傳回值有問題,是這 invalid pointer operation 錯誤訊息 可是關閉主程式卻是沒任何述錯誤訊息.. 真的好怪呢.... PS : 我只是下載前輩所公佈的程式碼去修改,增加function而已..並沒有大量修改內容...
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-03 02:59:32 IP:61.66.xxx.xxx 未訂閱
引言: 主程式 function KT(Title:string):string; far; external 'DllLib.DLL'; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:=KT('s'); end;
function KT(Title:string):string; far; external 'DllLib.DLL'; function KT(Title:string):string; external 'DllLib.DLL'; 改成這樣試試看!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-03 03:01:58 IP:61.66.xxx.xxx 未訂閱
引言: Rain 前輩 另一個問題想請問你說,, 呼叫 dll 時候傳回會有錯誤訊息,是沒錯 可是當我關閉主程式時,卻出現另一種錯誤訊息 錯誤訊息如下:: 應用程式發生例外 不明的軟體例外錯誤(0x0eedfade)於位置0x77d6f142 及 Runtimer error 217 at 00416BE8
不知道你的主程式是否在 onclose 上有加入 action:= cafree; form1:= nil; 如果有請拿掉!
degr
一般會員


發表:22
回覆:36
積分:21
註冊:2002-03-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-03 13:09:45 IP:61.221.xxx.xxx 未訂閱
P.D. 版版 你說的方式 我有試過..一樣不行.. 我只有增加function 而已,不沒有在修改哪邊了 如果 P.D. 版版 你可以下載範例試看看..我只是要傳回值... 該範例是傳回boolean... 真是懊惱...我只好改變其他方式..試看看嚕...><..
系統時間:2024-04-29 3:38:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!