为什么要Memo.Lines
使用抽象类TStrings
?为什么不使用它TStringList
呢?
我应该TStringList
在使用它之前将其转换为吗?
为什么要Memo.Lines
使用抽象类TStrings
?为什么不使用它TStringList
呢?
我应该TStringList
在使用它之前将其转换为吗?
TMemo.Lines
, TListBox.Items
,TComboBox.Items
等; 所有都被声明为TStrings
. 当心,谈论的是财产!内部创建的类型分别是TMemoStrings
和TListBoxStrings
,TComboBoxStrings
它们都是存储的后代,TStrings
并且在存储方式上有所不同。
为什么?为了互换性和互操作性。所以每个TStrings
-descendant 都有相同的属性,所以你可以这样做:
Memo1.Lines := ListBox1.Items;
如何使用?好吧,TStrings
像这样的属性TMemo.Lines
就可以了。您可以添加、删除、更改、更新和清除属性上的字符串(和对象),因为它在内部TMemoStrings
实现了所有这些交互。声明<>实现。
但是当您需要任何特殊处理时,例如TStringList
提供的排序,那么您需要帮助。您不能进行类型转换或将 a 转换TMemo.Lines
为 a TStringList
,因为它不是一个,但是您需要为此特殊处理创建一个中间对象:
var
Temp: TStringList;
begin
Temp := TStringList.Create;
try
Temp.Assign(Memo1.Lines);
Temp.Sort;
Memo1.Lines.Assign(Temp);
finally
Temp.Free;
end;
end;