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

請問 TSTRINGS 和 TSTRINGLIST 有何區別?

答題得分者是:wameng
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-05 16:37:23 IP:61.237.xxx.xxx 未訂閱
請問 TSTRINGS 和 TSTRINGLIST 有何區別?我經常看到以下的用法: VAR AP : TSTRINGS; BEGIN ... AP := TSTRINGLIST.CREATE; ... END; 謝謝指教。
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-05 17:07:44 IP:61.222.xxx.xxx 未訂閱
TStrings 為虛體。雖然有宣告屬性與方法但不存在任何實做。 就是空殼啦!{我都不知道怎麼解釋!} 必須由繼承者,設定 讀取寫入方式。 像是 TstringList TListBoxStrings TComboBoxStrings TMemoStrings 才是實體。 Delphi 這樣處理的用意在於讓每個繼承TStrings的兒子們共通。 如 Memo.lines ,Combobox.items,Listbox.items 如果說的不是很正統或誤解,請批評指教。
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-05 17:31:34 IP:61.237.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-05 17:48:53 IP:61.222.xxx.xxx 未訂閱
如果使用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-05 18:21:35 IP:211.23.xxx.xxx 未訂閱
使用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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-06 10:22:13 IP:211.162.xxx.xxx 未訂閱
不好意思,插個花,小弟在下篇中有少許TStrings的相關討論,做爲一點補充: >人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網
------
人生在勤,不索何获?
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-06 15:44:51 IP:61.237.xxx.xxx 未訂閱
谢谢各位指教。
系統時間:2024-07-02 1:00:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!