Вниз
Скачать: CL | DM;

Копирование указателей   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.004 c
8-1221912190
Elz
2008-09-20 16:03
2012.01.15
Помогите найти ошибку в коде


15-1317328203
Юрий
2011-09-30 00:30
2012.01.15
С днем рождения ! 30 сентября 2011 пятница


9-1175164239
crytogen
2007-03-29 14:30
2012.01.15
нарисовать трубу в OpenGL по точкам


1-1280310464
George
2010-07-28 13:47
2012.01.15
Обращение к сетевой папке из службы


4-1253534102
__Алексей__
2009-09-21 15:55
2012.01.15
Доступ из службы к сетевому компбютеру




   Наверх