为什么Memo.Lines
使用抽象类TStrings
?为什么不使用TStringList
反而?
我应该将其转换为TStringList
在使用它之前?
TMemo.Lines
, TListBox.Items
, TComboBox.Items
, ETC。 ;全部被声明为TStrings
。当心,谈论的是财产!内部创建的类型是TMemoStrings
, TListBoxStrings
and TComboBoxStrings
分别是TStrings
并且存储方式各不相同。
为什么?为了互换性和互操作性。所以每TStrings
-descendant 具有相同的属性,因此您可以执行以下操作:
Memo1.Lines := ListBox1.Items;
如何使用?嗯,一个TStrings
财产就像TMemo.Lines
工作得很好。您可以添加、删除、更改、更新和清除属性上的字符串(和对象),因为它在内部是一个TMemoStrings
它实现了所有这些交互。声明执行。
但是当你想要任何特殊处理时,例如就像排序哪个TStringList
提供,那么您需要帮助。您不能进行类型转换或转换TMemo.Lines
to 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)