Вверх ↑
Ответов: 4628
Рейтинг: 749
#1: 2015-10-09 11:45:35 ЛС | профиль | цитата
3042 писал(а):
1. Правильно ли организовал функцию GetSrc? Т.е. не будет ли такого, что обращаются к несозданному объекту (картинке) или, наоборот, утечки памяти?

1. Используй var - избежишь лишнего копирования TData.
THIJanFX.GetSrc(var _Data:TData; needDest:boolean):boolean;

Да и, кажется, в твоем варианте значение из потока будет подаваться на обе точки Bitmap, Bitmap2. Функцию
THIJanFX.GetSrc(_Data,_Data2:TData; needDest:boolean):boolean;
можно сделать как
THIJanFX.GetSrc2(var _Data: TData; needDest: boolean): boolean;


2. Вместо кучи ReadData/_IsBitmap/ToBitmap используй ReadBitmap

#pas
var
Bmp: PBitmap;
begin
Bmp := ReadBitmap(_Data, _data_Bitmap);
if Bmp <> nil then
begin
........
end;
end;
3042 писал(а):
правильно ли то, что Fsrc после выдачи на событие не разрушается ф-цией Free_And_Nil?
Либо уничтожать сразу после события, либо никогда не уничтожать и в деструкторе проверять Fsrc, Fdst на nil, если не равны - уничтожить.

THIJanFX._work_doSolarize и в других местах писал(а):
Fsrc.Free;
Fdst.Free;
А где присвоение nil? После этого функции GetSrc выдадут ошибку.

карма: 26

1
Голосовали:3042