TStrings與TStringList的差別與用法 |
答題得分者是:ha0009
|
nnn0918k
一般會員 發表:12 回覆:33 積分:14 註冊:2003-05-12 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
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 發送簡訊給我 |
你好:
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |