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

請教關於DLL的觀念

答題得分者是:ddy
Maitreya229
一般會員


發表:3
回覆:7
積分:2
註冊:2010-09-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-09-09 09:55:06 IP:218.211.xxx.xxx 訂閱
各位大大好,
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-09-09 11:03:32 IP:59.120.xxx.xxx 未訂閱
小弟我也不太清楚DLL是否可以一直保有變數...(我也是個小小新手....)
可能要請前輩們指導了

不過~
是不是可將dll運算出來的值先放到專案中的全域變數?
假如您指的表單就是Form的話
您可以在主Form中宣告個全域變數
這樣一來B也就不用去讀dll了
我是覺得反正dll的X值是最新的
那麼先將值給撈出來放著應該也沒差吧...XD

個人意見~
僅供參考>"<


===================引 用 Maitreya229 文 章===================
各位大大好,
編輯記錄
老大仔 重新編輯於 2010-09-09 11:04:42, 註解 無‧
Maitreya229
一般會員


發表:3
回覆:7
積分:2
註冊:2010-09-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-09-09 11:44:08 IP:218.211.xxx.xxx 訂閱
感謝五星的"小小新手" 老大仔 給小弟回覆,

所以我才希望dll的變數值能夠一直保持住,
不然重複去重建那麼龐大的資料效能的影響是很驚人的.




===================引 用 老大仔 文 章===================
小弟我也不太清楚DLL是否可以一直保有變數...(我也是個小小新手....)
可能要請前輩們指導了

不過~
是不是可將dll運算出來的值先放到專案中的全域變數?
假如您指的表單就是Form的話
您可以在主Form中宣告個全域變數
這樣一來B也就不用去讀dll了
我是覺得反正dll的X值是最新的
那麼先將值給撈出來放著應該也沒差吧...XD

個人意見~
僅供參考>"<

編輯記錄
Maitreya229 重新編輯於 2010-09-09 16:00:38, 註解 無‧
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-09-09 14:01:17 IP:59.124.xxx.xxx 訂閱
Maitreya229
一般會員


發表:3
回覆:7
積分:2
註冊:2010-09-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-09-09 15:59:48 IP:218.211.xxx.xxx 訂閱
感謝副站長大人的回覆,
我會試看看.

另外再請教,
我如果於dll的function中傳入一個pchar,
我於參數傳入前先指定給一個string變數.
例如:
var
meg:string;
testPchar:PChar;

begin
meg:='wow!! test success , 2010/09/09.';
test:=Addr(meg);
testFun(testPchar);
//之後秀出meg的值,也許已在testFun被修改為 'test12345'
end

那pchar傳入後,在testFun裡面應該要如何才能正確修改所指定的變數值?
因為我試過一些寫法,不是有錯誤就是meg最後的值裡面是一片空白,
我想可能是我的觀念不夠正確,或者寫法有誤.

目前持續找資料並試著修正中QQ...

還請各位大大不吝賜教.


P.S. 我目前用的是 Delphi 2006 for .NET






===================引 用 ddy 文 章===================
參考
http://msdn.microsoft.com/zh-tw/library/h90dkhs0(VS.80).aspx

編輯記錄
Maitreya229 重新編輯於 2010-09-09 16:15:33, 註解 無‧
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-09-09 16:40:22 IP:59.124.xxx.xxx 訂閱
其實看了很久不太明白你的問題 XD

不過我猜測你應該是卡在 string 傳址/傳值的問題
給你一個小範例,
如果你希望字串傳進function後,原字串不要被修改,那就直接傳就行了
如果你希望字串傳進function後,原字串要被修改,那在宣告時加上 var 就行了,不用再轉成PChar
procedure TForm1.Button1Click(Sender: TObject);
var
msg:string;
testPchar:PChar;
begin
msg:='wow!! test success , 2010/09/09.';
testPchar:=Addr(msg);
testFun(msg);
Button1.Caption :=msg;
end;

procedure
TForm1.testFun(
編輯記錄
ddy 重新編輯於 2010-09-09 16:41:28, 註解 無‧
Maitreya229
一般會員


發表:3
回覆:7
積分:2
註冊:2010-09-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-09-09 17:10:55 IP:218.211.xxx.xxx 訂閱
感謝副站長回覆,


編輯記錄
Maitreya229 重新編輯於 2010-09-09 17:11:33, 註解 無‧
Maitreya229
一般會員


發表:3
回覆:7
積分:2
註冊:2010-09-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-09-09 18:29:00 IP:218.211.xxx.xxx 訂閱
抱歉,再請教一下,
編輯記錄
Maitreya229 重新編輯於 2010-09-09 18:29:53, 註解 無‧
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-09-09 18:41:55 IP:122.147.xxx.xxx 訂閱
 不好意思,不是不回答你的問題
你問的問題愈來愈偏離你的題目囉~其它問題請另開新帖^^
Maitreya229
一般會員


發表:3
回覆:7
積分:2
註冊:2010-09-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2010-09-09 19:30:06 IP:218.211.xxx.xxx 訂閱
副站長,
因為我覺得這都在實作DLL遇到的相關問題,
所以我才持續發問,
如果您認為要另案處理那我就只好另開囉 XDD"



===================引 用 ddy 文 章===================
不好意思,不是不回答你的問題
你問的問題愈來愈偏離你的題目囉~其它問題請另開新帖^^
系統時間:2024-04-26 1:00:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!