![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ресурсы, JPEG и TImage [D7, WinXP]
X9 © (2004-04-25 07:39:00)В ресурсах моей программы находится JPEG-рисунок, мне необходимо отобразить его в TImage без сохранения на диск. При использовании следующего кода вылетает AV:
{В uses присутствует модуль Jpeg, в ресурсах программы имеется ресурс RESIMG типа MYJPEG, созданный путем компиляции следующего RС-файла:
--------------------------
RESIMG MYJPEG "myjpeg.jpg"
--------------------------}
{$R myres.res}
var Img: TImage;
RS: TResourceStream;
MS: TMemoryStream;
begin
Img := TImage.Create(Self);
RS := TResourceStream.Create(hInstance, 'RESIMG', 'MYJPEG');
MS := TMemoryStream.Create;
MS.LoadFromStream(RS);
Img.Picture.Graphic.LoadFromStream(MS); //Здесь вылетает AV
RS.Free;
MS.Free;
А при выполнении следующего кода не происходит ничего, TImage - пустой:
{$R myres.res}
var Img: TImage;
JImg: TJpegImage;
RS: TResourceStream;
MS: TMemoryStream
begin
Img := TImage.Create(Self);
JImg := TJpegImage.Create;
RS := TResourceStream.Create(hInstance, 'RESIMG', 'MYJPEG');
MS := TMemoryStream.Create;
MS.LoadFromStream(RS);
JImg.LoadFromStream(MS);
Img.Picture.Bitmap.Assign(JImg);
RS.Free;
MS.Free;
JImg.Freee;
end;
Причём при сохранении JPeg-рисунка из ресурса на диск и последующей его загрузке с небольшой доработкой работают оба метода. Подскажите пожалуйста, как мне быть.
X9 (2004-04-27 17:02:00) [1]Всем большое спасибо!
Алхимик (2004-04-26 21:57:00) [2]Рекомендую:
Как включить JPG-файл внутрь exe-файла?
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625327&n=21
Mim1 (2004-04-25 11:26:00) [3]попробуйте в первом случаем вмечто MS.LoadFromStream(RS);
вызывать ms.copyfrom, после чего устанавливайте позицию в 0
ms.position := 0;
Проверьте существует ли обьект graphic те Img.Picture.Graphic <> nil. Если не то его нада дополнительно инициализировать.