請問 TSTRINGS 和 TSTRINGLIST 有何區別? |
答題得分者是:wameng
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
引言: TStrings 為虛體。雖然有宣告屬性與方法但不存在任何實做。 就是空殼啦!{我都不知道怎麼解釋!} 必須由繼承者,設定 讀取寫入方式。 像是 TstringList TListBoxStrings TComboBoxStrings TMemoStrings 才是實體。 Delphi 這樣處理的用意在於讓每個繼承TStrings的兒子們共通。 如 Memo.lines ,Combobox.items,Listbox.items 如果說的不是很正統或誤解,請批評指教。那上面的定義可以用以下的定義方法嗎? VAR AP : TSTRINGS; BEGIN ... AP := TSTRINGS.CREATE; ... END; 還有爲什麽定義成TSTRINGS,而不直接定義成TSTRINGLIST呢?謝謝指教。 發表人 - CXG 於 2004/10/05 17:34:13 |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
如果使用
AP := TSTRINGS.CREATE;
可能會引發 ACCESS_VIOLATION 錯誤訊息。
--------------------------------------------
VAR
AP : TSTRINGS;
BEGIN
...
AP := TSTRINGLIST.CREATE; 使用這樣,主要是習慣的問題。 也可以直接寫為
VAR
AP : TSTRINGLIST;
BEGIN
...
AP := TSTRINGLIST.CREATE; 還是慣用性的問題。 假設我寫了一個函數
Prcoedure AddItems(Items:Tstrings);
begin
Ietms.add('1111');
end; 當 AP : TSTRINGLIST; 就無法帶入{類型不對}
當然以可以強制轉換 AddItems(Tstrings(AP));
但是何苦來哉! 在Delphi 函數中有很多都引用 TStrings
如 Tinifile 的ReadSectionValues.或 Regestry.... 發表人 - wameng 於 2004/10/05 17:54:37
|
a6475
高階會員 發表:67 回覆:230 積分:154 註冊:2002-09-15 發送簡訊給我 |
使用TStrings最大的差別,就是不能用TStringList的函數
典型的像Sort;
var s1 : TStrings; s2 : TStringList; begin s1 := TStringList.Create; s1.Add('2'); s1.Add('1'); s2 := TStringList.Create; s2.Add('2'); s2.Add('1'); //s1.Sort; //不能通過 s2.Sort;別的網站的討論: http://www.delphibbs.com/delphibbs/dispq.asp?lid=1707369 ..-----------βλμε------------.. ◎Oo月夜 光明 藍更愁oO◎ 藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁 |
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |