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

TStrings與TStringList的差別與用法

答題得分者是:ha0009
nnn0918k
一般會員


發表:12
回覆:33
積分:14
註冊:2003-05-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-07 19:17:09 IP:218.164.xxx.xxx 未訂閱
如題..有人能示範一下嗎 火舞精靈 - 蘇
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-07 20:59:07 IP:61.70.xxx.xxx 未訂閱
TStringList 是繼承 TStrings 而來的 你不應該直接使用 TStrings,而是要用 TStringList 來工作  因為 TStrings 內所含有的方法 (Method),有些是 abstract 的沒有程式碼,直接使用Tstrings 來呼叫時會出錯,所以 TStrings 是用來繼承,並將 abstract 的方法補寫程式碼成為自訂的一個物件,而 TstringList 就是這樣來的 ,只是是由 Borland 幫你改好的 當然 TStrings 還是可以用,只要注意不去使用 abstract 的方法,就不會出錯,但是這樣不好,違背了其 OOP 設計上的原則 TStrings 不能直接呼叫使用的有 1.TStrings.Get 2.TStrings.GetCount 3.TStrings.Delete 4.TStrings.Insert 5.TStrings.Clear    這些 Help 都有寫,你別那麼懶惰!
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-07 21:00:40 IP:61.56.xxx.xxx 未訂閱
你好: TStrings 是一個抽象的物件,無法直接使用。而 TStringList 則是繼承自 TStrings  且實作了宣告為抽象的程序,如 Clear 程序便是。去看看 Source 你便可了解何謂 Abstract 與如何實作。下面舉出實例。    
1. 這個範例的 S 宣告為 TStrings,建立實體也是以 TStrings 建構。
   因為抽象的程序尚未實作,所以會有 "Abstract Error" 的錯誤。
var
   S : TStrings;
begin
   S := TStrings.Create;
   try
      S.Add ('aaa');
   finally
      FreeAndNil (s);
   end;
end;
2. 這個範例的 S 宣告為 TStrings,建立實體是以 TStringList 建構。
   因為抽象的程序已由 TStringList 實作,所以能夠執行。
var
   S : TStrings;
begin
   S := TStringList.Create;
   try
      S.Add ('aaa');
   finally
      FreeAndNil (s);
   end;
end;
3. 這個範例的 S 宣告為 TStringList ,建立實體卻是以 TStrings 建構。
   會無法編譯。
var
   S : TStringList;
begin
   S := TStringS.Create;
   try
      S.Add ('aaa');
   finally
      FreeAndNil (s);
   end;
end;
nnn0918k
一般會員


發表:12
回覆:33
積分:14
註冊:2003-05-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-07 21:05:53 IP:218.164.xxx.xxx 未訂閱
感謝兩位.. (D7的說明我看不懂..) 火舞精靈 - 蘇
系統時間:2024-05-18 19:54:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!