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

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

Копирование указателей [D7, XP]


Alex_C ©   (2011-10-05 16:37:00) 

В упрощенном виде есть record

type
 TFigure = record
   X: integer;
   Y: integer;
   B: TBitMap;


есть объекты

var
  A, B: TFigure;


Вопрос: как правильно скопировать A в B? Поясню вопрос: как правильно копировать-удалять указатель на TBitmap?


Palladin   (2011-10-06 11:39:00) [1]


> Как обычно спасибо за большое количество бестолковых высказываний.
> Перед тем как советовать надо хоть попытаться понять суть
> вопроса.

ты не охренел-ли, парниша?


Alex_C   (2011-10-06 11:33:00) [2]

Как обычно спасибо за большое количество бестолковых высказываний.
Перед тем как советовать надо хоть попытаться понять суть вопроса.
А суть в объекте Bitmap. Если просто делать A := B, то объект Bitmap у A получается "зависнет" в памяти, ведь мы ж его не Free, правильно я понимаю. Следовательно перед A := B необходимо сделать

if assigned(A.B) then
 FreeAndNil(A.B);

Прошу прощения машинально обозвал и объект Bitmapa той же буквой, что и объект TFigure. Тут вроде как все понятно. Но! Если объект класса TFigure - локальная переменная, то при использовании указатель на битмап не инициализируется как nil, в результате указанный выше код даст ошибку при попытке удаления несуществующего объекта.
Получается есть только один выход: перед использованием локальной переменной типа TFigure указатель на битмап принудительно приравнивать к nil.
Правильно ли я понимаю, что по другому никак?


Cobalt   (2011-10-06 09:56:00) [3]

Эх вы, а еще россияне...
Неужто нужно ставить смайлики?


Германн   (2011-10-06 01:01:00) [4]


> Cobalt ©   (05.10.11 22:39) [10]
>
> > Rouse_ ©   (05.10.11 16:39) [1]
> >
> > A := B;
>
> Вот правильно тебе не дают голубые штаны!
>
> 1) B: TBitMap;
>
> 2)  A: TFigure;
>

Имхо, противоречит условию задачи:

> var
>   A, B: TFigure;
>
>


Rouse_   (2011-10-05 23:39:00) [5]


> Cobalt ©   (05.10.11 22:39) [10]
> Вот правильно тебе не дают голубые штаны!
>
> 1) B: TBitMap;
>
> 2)  A: TFigure;

Сурово...


Dennis I. Komarov   (2011-10-05 23:32:00) [6]


> Cobalt ©   (05.10.11 22:39) [10]

Ничего подобного...
B.B: TBitMap;
A,B: TFigure;


Cobalt   (2011-10-05 22:39:00) [7]

> Rouse_ ©   (05.10.11 16:39) [1]
>
> A := B;


Вот правильно тебе не дают голубые штаны!

1) B: TBitMap;

2)  A: TFigure;


Сергей М.   (2011-10-05 21:44:00) [8]


> Ни A := B; ни Assign выдают ошибку


[proga.exe] Fatal error: monopenisual


Dennis I. Komarov   (2011-10-05 19:30:00) [9]


> Похоже что ошибка в 17-ой строке

Да он столько не написал :)


Rouse_   (2011-10-05 18:49:00) [10]


> Alex_C   (05.10.11 18:03) [5]
>
> Нет ребят. Ни A := B; ни Assign выдают ошибку...

Похоже что ошибка в 17-ой строке


Плохиш   (2011-10-05 18:05:00) [11]

Так помедитируй над ошибкой и книжку-какую почитай.


Alex_C   (2011-10-05 18:03:00) [12]

Нет ребят. Ни A := B; ни Assign выдают ошибку... Не есть это правильно..


картман   (2011-10-05 17:25:00) [13]


> монопенисюально..

почти


Rouse_   (2011-10-05 17:17:00) [14]

В данном случае это монопенисюально...


картман   (2011-10-05 17:05:00) [15]

нверное Assign он хотел


Rouse_   (2011-10-05 16:39:00) [16]

A := B;


Наверх

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