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

物件單元檔內的TYPE相衝問題

尚未結案
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-14 06:06:39 IP:220.134.xxx.xxx 訂閱
各位前輩及版主大人:

我撰寫了A物件和B物件,並放於A_.pas和B_.pas單元檔內,由於a物件和B物件,性質有部份相同同為資料庫輸入物件,
我在TYPE 宣告段內,都宣告了如下
<textarea class="delphi" rows="10" cols="60" name="code"> type // 只有選擇特定的key形式,有其特別意義 TDB_Field_KEY_TYPE = (tcPrimary_Key, tcNon_Key); TDB_Field_ValueCheck = (tcNon_Check, tcForeign_Key, tcNot_Null); TDB_Field_ValueType = (tcDate, tcString, tcNumber, tcBoolean, tcStringList, tcDBRUNSQL); TDB_Field_InputMethod = (tcManual, tcAutoNO, tcFormQuery); // 輸入方法選擇 人工、自動編號、表單查詢選擇</textarea> 單一物件開發時,沒有發現問題,但是兩個物件開始使用後,卻發生編譯會出現錯誤訊息,如附件 不知道是否只能將各單元當內的type宣告,改名,還是有其他作法? 真是頭大了! 感謝!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
附加檔案:45d2366fd2f52_Error.jpg
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-14 08:39:14 IP:60.248.xxx.xxx 未訂閱
可以用泛化概念,把共用的型態變數推至父類別
或是用VarA:unitA.XXXX及VarB:unitB.XXXX領域限定
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-14 10:03:28 IP:211.76.xxx.xxx 訂閱
這有幾種狀況
1. A_.pas 使用 B_.pas, 但 B_.pas 沒有uses A_.pas
2. B_.pas 使用 A_.pas, 但 A_.pas 沒有uses B_.pas
3. A_.pas, B_.pas 彼此都 uses 對方.

解法
1. 將這些宣告在 B_.pas 中
2. 將這些宣告在 A_.pas 中
3. 另外開起一個空架構的 xx.pas, 將這些宣告在 xx.pas 中.
A_.pas, B_.pas 都 uses xx.pas.

第3種解法也適用 1,2 狀況
------
將問題盡快結案也是一種禮貌!
yorkland
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-15 14:34:44 IP:60.248.xxx.xxx 訂閱
我也常遇到同名的狀況, 但是Delphi在宣告物件或型別時, 前頭可以加上Unit Name, 如底下紅色所述。
使用AUnit的函式時, 就用AUnit的宣告, 指定清楚, 應該就能避開你所說的困擾。
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
A: AUnit.TMyClass;
B: BUnit.TMyClass;

end;
vitojeng
一般會員


發表:2
回覆:13
積分:13
註冊:2003-10-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-02-18 15:29:41 IP:59.105.xxx.xxx 訂閱
同名的問題很常見, 怎麼解要視您整體的狀況來決定,

A, B 兩元件是否要同共這些同名的型態 ?
若是共用, 最好是移至一個共用的 unit,
若不是共用, 就需要更改型別名稱, 或是在使用時冠上 unit name, 也就是 yorkland 講的方式.
自己是不太喜歡另外再冠上 unit name, 但有時還是不能避免.
系統時間:2024-04-28 15:47:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!