![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Простейший вывод картинки [D7, WinXP]
VasRog © (2004-09-18 12:53:00)Не получается почему-то. Вот листинг:
procedure TForm1.FormActivate(Sender: TObject);
var
EHMap: TBitmap;
begin
with form1.Image1.Canvas do
begin
Pen.Color:=colorbox1.Selected;
Pen.Style:= psDashDot;
EHMap:= TBitmap.Create;
try
EHMap.LoadFromFile('EarthMapm.bmp')
except
EHMap.free;
end; // try
end; // with
end;
Заместо картинки остается белое пятно.Сначала думал, что исключение срабатывает, но ничего не произойдет, если убрать try except.
Помогите найти ошибку, please.
VasRog (2004-09-18 18:23:00) [1]Огромное спасибо.
Рыба (2004-09-18 17:43:00) [2]>VasRog (18.09.04 12:53)
try
EHMap.LoadFromFile('EarthMapm.bmp')
except
EHMap.free;
end; // try
В этом случае выделенная под картинку память освободится только в случае исключения. Т.е. на лицо прямая утечка памяти. Вместо этого надо писать finally, чтобы память в любом случае освободилась. Твой пример можно переписать так:
procedure TForm1.FormActivate(Sender: TObject);
var EHMap: TBitmap;
begin
with Image1.Canvas do
begin
Pen.Color:= colorbox1.Selected;
Pen.Style:= psDashDot;
end;
EHMap:= TBitmap.Create;
try
try
EHMap.LoadFromFile('EarthMapm.bmp');
Image1.Canvas.Draw(0, 0, EHMap);
except
ShowMessage('Произошла ошибка. Возможно файл не найден.');
end; // try-expect
finally
EHMap.free;
end; // try-finally
end;
Kind (2004-09-18 14:27:00) [3]А где код который отображает саму картинку?
Ты её только загрузил и всё. Canvas.Draw используй