TStrings型とTStringList型


kuri  2004-02-12 01:55:01  No: 7057

いろいろ調べたのですが、
 TStrings型とTStringList型の違いがよくわかりません。
どうかご教授お願いいたします。


るるとん@K  2004-02-12 02:08:17  No: 7058

以下のようなメソッド、プロパティ、イベントがあります
Add,Delete,Clear,Count,onChange他


たかみちえ  URL  2004-02-12 02:58:40  No: 7059

TStringsは、ヘルプを見てわかるとおり、TStringsは抽象メソッド(とりあえず定義だけしてあって、実体がないメソッド)があります。それに実体をつけてあげたのが、TStringListクラスです。実際に使う際には、TStringListをつかうのが普通です。

  ではなぜTStringsなんてものがあるかというと、TStringListとはまた違う形で、
文字列リストクラスを作るときのためにあるのです。
  関数の引数としてTStringListを受け取りたいときは、TStrings型を要求しておいた方が、データ管理方式は同じだが、祖先が違うようなクラスを受け取れる可能性があるぶん、有利だと思います。
別に警告されることもありませんしね。
(まあ、入力補完機能がちょっと「ん?」ですが)

  っとまあ、こんな感じでいいでしょう。
詳しく知ってるわけではありませんから、ちょっと違うかもしれません。
よければどなたかにフォローをお願いしたいです。


jok  2004-02-12 06:31:32  No: 7060

> TStrings型とTStringList型の違いがよくわかりません。

たかみさんの説明でほぼ尽きていますが、TStrings は、「文字列リスト」全体の
基礎となる抽象クラスですから、実際のインスタンスを生成してつかうことはでき
ません。これから派生した具体クラスの共通の機能を表すために、存在します。
ですから、TMemo.Lines や TListBox.Items など、共通の機能で実際は異なった
具体クラスの場合のようにユーザがアクセスするとき便利なように TStrings 型
になっています。クラス型 OOP の「多態性」の一つです。

自分で「文字列リスト」を使うときは TStringList を使う必要があります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加