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

DLL中全域變數問題和傳值問題

答題得分者是:TheBloodKing
eath199
一般會員


發表:23
回覆:33
積分:16
註冊:2006-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-15 10:46:07 IP:203.203.xxx.xxx 訂閱
我想請問:今天我從主程式輸入"IP位址"和"PORT"並且傳這兩個值到DLL,DLL中會建立一個FORM如下
void __stdcall Add(AnsiString a,int b)
{
rf009_Form1 = new Trf009_Form1(NULL);
}
然後我在FORM中有拉一個TClientSocket的元件
想將接收到的兩個值也傳進去到Form
請問在這行建構式rf009_Form1 = new Trf009_Form1(NULL);可以傳值ㄇ??

還有一個問題是在DLL和建立的FORM之間要如何建立他們的全域變數??

麻煩高手位小弟解答一下

yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-15 14:21:05 IP:60.248.xxx.xxx 訂閱
1. 以物件為基礎的想法, 全域的變數越少越好。
2. 可以改寫Constructor取代舊的Create, 如此就能傳入多個參數。
3. 比較建議的作法是, Create之後再把那二個值以Form->Property方式, 傳入給這個Create的Form, 並不需要一次把參數全放在Create裡。
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-15 16:11:26 IP:220.132.xxx.xxx 訂閱

===================引 用 文 章===================
我想請問:今天我從主程式輸入"IP位址"和"PORT"並且傳這兩個值到DLL,DLL中會建立一個FORM如下
void __stdcall Add(AnsiString a,int b)
{????
??????? rf009_Form1 = new Trf009_Form1(NULL);
}
然後我在FORM中有拉一個TClientSocket的元件
想將接收到的兩個值也傳進去到Form
請問在這行建構式rf009_Form1 = new Trf009_Form1(NULL);可以傳值ㄇ??

還有一個問題是在DLL和建立的FORM之間要如何建立他們的全域變數??

麻煩高手位小弟解答一下


======================================
__fastcall Trf009_Form1(TComponent* Owner);
__fastcall Trf009_Form1(TComponent* Owner,AnsiString a,int b);






void __stdcall Add(AnsiString a,int b)
{
rf009_Form1 = new Trf009_Form1(NULL,a,b );
}





eath199
一般會員


發表:23
回覆:33
積分:16
註冊:2006-12-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-15 17:25:53 IP:203.203.xxx.xxx 訂閱
感謝解答,可否再請教一個問題
DLL中的 void __fastcall TRF009_Form1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) 事件裡

podno = Socket->ReceiveText(); 接收的值要如何傳出來傳到 1.DLL檔中 2.主程式的FORM裡

還有就是我在DLL中的FORM放上 TADOConnection 和 TADOQuery 元件後

主程式去呼叫DLL時就會出現錯誤訊息
exception class EOleSysError with message ""CoInitialize尚未被呼叫到""

TheBloodKing
一般會員


發表:8
回覆:17
積分:10
註冊:2004-07-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-02-16 19:14:35 IP:203.83.xxx.xxx 訂閱
雖然我dll功力淺,你可以看下剛發文章,因為我的dll是有傳入的
你可以參考下
eath199
一般會員


發表:23
回覆:33
積分:16
註冊:2006-12-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-02-17 18:56:13 IP:211.76.xxx.xxx 訂閱
想在請教兩個問題
1.在主程式中如何一直讀取dll中的變數值??
2.如果資料庫要一直更新的話我該寫在哪個event中 才可以一直執行 又不會造成無窮迴圈
感謝高手誠心的為我解答

TheBloodKing
一般會員


發表:8
回覆:17
積分:10
註冊:2004-07-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-02-17 19:21:37 IP:203.83.xxx.xxx 訂閱
1.在主程式中如何一直讀取dll中的變數值??
那要看你dll 存活問題,不過個人覺得如果有這樣變數,還是在主程式儲存好,因為 程式運行ram 問題

2.如果資料庫要一直更新的話我該寫在哪個event中 才可以一直執行 又不會造成無窮迴圈

你意思是不停更新看結果?
eath199
一般會員


發表:23
回覆:33
積分:16
註冊:2006-12-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-02-18 10:54:05 IP:211.76.xxx.xxx 訂閱
目前dll可以一直存活著
然後在主程式方面 是想一直更新沒錯
請問有甚麼方式ㄇ
系統時間:2024-05-01 0:52:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!