線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1470
推到 Plurk!
推到 Facebook!

Create 參數問題

答題得分者是:ccchen
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-12 22:37:14 IP:61.30.xxx.xxx 未訂閱
請問 Ds :=TDatasource.Create(Application.Owner ); Ds :=TDatasource.Create(Self); 這兩個傳入值有何不同
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-13 07:30:50 IP:202.39.xxx.xxx 未訂閱
善用 Search 功能, 參考此篇: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23132    --
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-13 09:57:33 IP:61.219.xxx.xxx 未訂閱
引言: 請問 Ds :=TDatasource.Create(Application.Owner ); Ds :=TDatasource.Create(Self); 這兩個傳入值有何不同
除http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23132外 有關Parent, Owner, Controls array, Components array 的觀念,有興趣可以參考一下 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20813 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20036 其實在你上一問題之後, 我補貼了這兩個連結, 真的可以看看
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-13 12:34:01 IP:61.218.xxx.xxx 未訂閱
引言:
引言: 請問 Ds :=TDatasource.Create(Application.Owner ); Ds :=TDatasource.Create(Self); 這兩個傳入值有何不同
除http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23132外 有關Parent, Owner, Controls array, Components array 的觀念,有興趣可以參考一下 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20813 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20036 其實在你上一問題之後, 我補貼了這兩個連結, 真的可以看看
請問如果我把 Ds :=TDatasource.Create(Self); 寫成DLL時,為什麼compiler不過
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-13 13:12:29 IP:61.219.xxx.xxx 未訂閱
請問如果我把 Ds :=TDatasource.Create(Self); 寫成DLL時,為什麼compiler不過 和Dll無關, 你把程式寫在什麼地方, 是一般procedure, 還是某Class之method. 必須為method, self才有意義 例如 在procedure TForm1.xxxx中, self代表form1 若是procedure xxx則self沒有意義
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-13 13:16:58 IP:61.218.xxx.xxx 未訂閱
引言: 請問如果我把 Ds :=TDatasource.Create(Self); 寫成DLL時,為什麼compiler不過 和Dll無關, 你把程式寫在什麼地方, 是一般procedure, 還是某Class之method. 必須為method, self才有意義 例如 在procedure TForm1.xxxx中, self代表form1 若是procedure xxx則self沒有意義
可是我的Dll裡並沒有Form,所以 只有 function XXXX那這樣的話是代表 create要傳入nil,那是否也代表傳入application沒有意義呢???
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-01-13 15:04:30 IP:61.219.xxx.xxx 未訂閱
傳入application是可以的, 可是如果你的Dll被兩個application呼叫就有問題了, 可以找一下DLL的文章 傳入nil, 自己負責free也可以
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-01-13 15:42:49 IP:61.218.xxx.xxx 未訂閱
引言: 傳入application是可以的, 可是如果你的Dll被兩個application呼叫就有問題了, 可以找一下DLL的文章 傳入nil, 自己負責free也可以
可是我試過傳入application也不行阿,只有Nil可以
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-01-13 15:58:07 IP:61.219.xxx.xxx 未訂閱
在Dll的Export Function加入一個參數, 傳入application的handle 例:
function FunInDll(h:THandle; ...);  //其餘參數照原來
begin
  application.Handle:=h;
...
//如此
  ds:=TDataSet.create(application);  //就可以成立
end;
呼叫此dll時 FunInDll(application.handle, ...)
cyl
中階會員


發表:163
回覆:171
積分:66
註冊:2002-07-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-01-13 17:16:20 IP:61.218.xxx.xxx 未訂閱
引言: 在Dll的Export Function加入一個參數, 傳入application的handle 例:
function FunInDll(h:THandle; ...);  //其餘參數照原來
begin
  application.Handle:=h;
...
//如此
  ds:=TDataSet.create(application);  //就可以成立
end;
呼叫此dll時 FunInDll(application.handle, ...)
那請問如果寫在Dll中是否傳入application比較好,因為我看之前的討論說Application會由MainForm free,如果傳入Nil就必須自己Free??
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-01-13 22:08:59 IP:203.217.xxx.xxx 未訂閱
自己Create自己Free本來就很好啊
系統時間:2024-12-05 2:46:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!