![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Assign или := [D4, Win95/98]
_Nicola_ © (2002-11-12 09:48:00)Есть куча записей (не БД), в которых есть поле TStringList. При переходе по записям TStringList отображается в Memo.
Как лучше сделать:
Memo.Lines := MyRec.StringList (как сейчас).
или
Memo.Lines.Assign(MyRec.StringList)?
2) Не будет ли при первом способе засоряться память?
3) Можно ли сделать так, чтобы изменения сделанные в Memo автоматически оставались в StringList текущей записи без специальной процедуры сохранения?
Спасибо всем ответившим.
Юрий Федоров (2002-11-12 10:57:00) [1]Слушайте MBO, он прав
Bsl (2002-11-12 10:33:00) [2]Мне кажется, что если StringList - это property, то нормальные порграммисты Borland не допустят лобовое присвоение объектов (указателей).
А если совсем точно нужно, то посмотри исходник TMemo - как работает это property.
Reindeer Moss Eater (2002-11-12 10:31:00) [3]не начинает он указывать.
_Nicola_ (2002-11-12 10:28:00) [4]Мне хотелось услышать независимое мнение. Но, как говорил какой-то известный робот - "Есть другая информация":
(Где-то вычитал)
При Memo.Lines := MyRec.StringList указатель Memo.Lines начинает указывать на MyRec.StringList (отсюда вопросы 2 и 3), а при Assign копируется содержимое. Но, действительно, глядя на исходники, убеждаешься, что это враки.
И по (3): если 2 указателя указывают на 1 переменную, то изменив значение по одному указателю, по другому прочитаем измененное значение. Наверное, как-то можно такое провернуть и со StringList. Я, правда, ничего не смог придумать. А вы?
Reindeer Moss Eater (2002-11-12 09:53:00) [5]1. Без разницы:
procedure TCustomMemo.SetLines(Value: TStrings);
begin
FLines.Assign(Value);
end;
2. Нет
3. Нет
MBo (2002-11-12 09:52:00) [6]1) оба способа делают одно и тоже.
3) OnChange Memo