Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо