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

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

Простейший вывод картинки [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 используй


Наверх

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