Ответ 1
TMemo.Lines
, TListBox.Items
, TComboBox.Items
и т.д.; все объявлены как TStrings
. Остерегайтесь, говоря о собственности! Внутренними созданными типами являются TMemoStrings
, TListBoxStrings
и TComboBoxStrings
соответственно, которые являются потомками TStrings
и различаются по мере хранения.
И почему? Для взаимозаменяемости и функциональной совместимости. Таким образом, каждый TStrings
-поток имеет те же свойства, что и вы можете сделать:
Memo1.Lines := ListBox1.Items;
Как использовать? Хорошо, свойство TStrings
, подобное TMemo.Lines
, отлично работает. Вы можете добавлять, удалять, изменять, обновлять и очищать строки (и объекты) в свойстве, потому что внутри это TMemoStrings
, который реализует все это взаимодействие. Декларация < > реализация.
Но когда вам нужна какая-либо специальная обработка, например. как TStringList
, то вам нужна помощь. Вы не можете прибегнуть к типу и преобразовать TMemo.Lines
в TStringList
, потому что он не один, но вместо этого вам нужно создать промежуточный объект для этой специальной обработки:
var
Temp: TStringList;
begin
Temp := TStringList.Create;
try
Temp.Assign(Memo1.Lines);
Temp.Sort;
Memo1.Lines.Assign(Temp);
finally
Temp.Free;
end;
end;