Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
ВнизКопирование указателей Найти похожие ветки
← →
Alex_C (2011-10-05 16:37) [0]В упрощенном виде есть record
type
TFigure = record
X: integer;
Y: integer;
B: TBitMap;
есть объекты
var
A, B: TFigure;
Вопрос: как правильно скопировать A в B? Поясню вопрос: как правильно копировать-удалять указатель на TBitmap?
← →
Rouse_ © (2011-10-05 16:39) [1]
A := B;
← →
картман © (2011-10-05 17:05) [2]нверное Assign он хотел
← →
Rouse_ © (2011-10-05 17:17) [3]В данном случае это монопенисюально...
← →
картман © (2011-10-05 17:25) [4]
> монопенисюально..
почти
← →
Alex_C (2011-10-05 18:03) [5]Нет ребят. Ни A := B; ни Assign выдают ошибку... Не есть это правильно..
← →
Плохиш © (2011-10-05 18:05) [6]Так помедитируй над ошибкой и книжку-какую почитай.
← →
Rouse_ © (2011-10-05 18:49) [7]
> Alex_C (05.10.11 18:03) [5]
>
> Нет ребят. Ни A := B; ни Assign выдают ошибку...
Похоже что ошибка в 17-ой строке
← →
Dennis I. Komarov © (2011-10-05 19:30) [8]
> Похоже что ошибка в 17-ой строке
Да он столько не написал :)
← →
Сергей М. © (2011-10-05 21:44) [9]
> Ни A := B; ни Assign выдают ошибку
[proga.exe] Fatal error: monopenisual
← →
Cobalt © (2011-10-05 22:39) [10]> Rouse_ © (05.10.11 16:39) [1]
>
> A := B;
Вот правильно тебе не дают голубые штаны!
1)B: TBitMap;
2)A: TFigure;
← →
Dennis I. Komarov © (2011-10-05 23:32) [11]
> Cobalt © (05.10.11 22:39) [10]
Ничего подобного...
B.B: TBitMap;
A,B: TFigure;
← →
Rouse_ © (2011-10-05 23:39) [12]
> Cobalt © (05.10.11 22:39) [10]
> Вот правильно тебе не дают голубые штаны!
>
> 1) B: TBitMap;
>
> 2) A: TFigure;
Сурово...
← →
Германн © (2011-10-06 01:01) [13]
> 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;
>
>
← →
Cobalt © (2011-10-06 09:56) [14]Эх вы, а еще россияне...
Неужто нужно ставить смайлики?
← →
Alex_C (2011-10-06 11:33) [15]Как обычно спасибо за большое количество бестолковых высказываний.
Перед тем как советовать надо хоть попытаться понять суть вопроса.
А суть в объекте Bitmap. Если просто делать A := B, то объект Bitmap у A получается "зависнет" в памяти, ведь мы ж его не Free, правильно я понимаю. Следовательно перед A := B необходимо сделать
if assigned(A.B) then
FreeAndNil(A.B);
Прошу прощения машинально обозвал и объект Bitmapa той же буквой, что и объект TFigure. Тут вроде как все понятно. Но! Если объект класса TFigure - локальная переменная, то при использовании указатель на битмап не инициализируется как nil, в результате указанный выше код даст ошибку при попытке удаления несуществующего объекта.
Получается есть только один выход: перед использованием локальной переменной типа TFigure указатель на битмап принудительно приравнивать к nil.
Правильно ли я понимаю, что по другому никак?
← →
Palladin © (2011-10-06 11:39) [16]
> Как обычно спасибо за большое количество бестолковых высказываний.
> Перед тем как советовать надо хоть попытаться понять суть
> вопроса.
ты не охренел-ли, парниша?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c