Delphi 7 - ›Невозможно загрузить изображение из файла ресурсов

Я часами искал в сети, используя Google, пытаясь получить PDF-файлы, но все еще не могу загрузить ресурс изображения в Delphi 7 ..

Мой файл test.rc выглядит так:

1 RT_BITMAP "1.bmp"

Я добавил файл test.rc в свой проект, используя Проект-> Добавить в проект .., который скомпилировал файл test.res при build и, похоже, автоматически включил файл .res в мой проект (поскольку использование {$ R test.res} говорит о том, что я уже использую этот ресурс). Я также попытался удалить test.res из проекта с помощью Project-> Remove from Project .. и вручную добавить {$ R test.res} в мой проект.

Однако независимо от того, как я включаю файл test.res ... я получаю

Project Project2.exe вызвал класс исключения EAccessViolation с сообщением «Нарушение доступа по адресу 00408D0C в модуле Project2.exe». Чтение адреса 00000001 '. Процесс остановлен. Для продолжения используйте «Шаг» или «Выполнить».

сначала я использовал

Image1.Picture.Bitmap.LoadFromResourceID(hInstance,1);

Потому что это то, что я нашел с помощью Google. И я получил эту ошибку. Позже я попробовал

procedure TForm1.Image1Click(Sender: TObject);
var bBitmap : TBitmap;
begin

 bBitmap := TBitmap.Create;
 try

  bBitmap.Handle := LoadBitmap(hInstance, '1');
  Image1.Width := bBitmap.Width;
  Image1.Height := bBitmap.Height;
  Image1.Canvas.Draw(0,0,bBitmap);
 finally

  bBitmap.Free;
end;


end;

Это не вызвало у меня никаких ошибок и не показало изображение, поэтому проблема осталась нерешенной.

Я новичок в использовании ресурсов, но я должен загрузить некоторые изображения в ресурсы, прежде чем я выпущу свой проект, чтобы файлы .BMP не смешивались с ...

Любая помощь будет высоко ценится!


person user513185    schedule 19.11.2010    source источник
comment
Вернемся к основам, зачем вам это нужно? почему бы вам просто не присвоить растровое изображение изображению во время разработки? Или, если вам нужна какая-то динамическая загрузка, почему бы вам не использовать TImageList и не загружать оттуда выбранное изображение во время выполнения?   -  person PA.    schedule 19.11.2010
comment
Мои файлы * .rc содержат строки типа IDB_BLUBB BITMAP DISCARDABLE "Blubb.bmp", т.е. тип ресурса BITMAP, а не RT_BITMAP. Может в этом виноват.   -  person Uli Gerhardt    schedule 19.11.2010
comment
@ PA- У меня есть визуальный интерфейс машины. Единственный способ, которым я мог бы использовать TImageList более одного раза, - это загрузить файл .bmp по умолчанию в компонент изображения и только затем загрузить другое изображение из списка изображений (поскольку однажды вы загрузили изображение из TImageList, вы не можете загрузить другое изображение в тот же компонент изображения); Мне нужен этот файл изображения BMP по умолчанию в ресурсе, чтобы он не закалялся   -  person user513185    schedule 19.11.2010


Ответы (1)


Я воспроизвел точно вашу задачу в тестовой программе.

Затем я изменил RT_BITMAP на BITMAP, перекомпилировал RC и протестировал.

Оно работает.

person PA.    schedule 19.11.2010
comment
Потрясающий! :) Большое спасибо! Что я сделал, так это то, что мои файлы .RC были изменены так же, как вы предложили (замените RT_BITMAP только на BITMAP). И используя только один оператор для загрузки ресурса: Image1.Picture.Bitmap.LoadFromResourceID (hInstance, 1); Работа сделана! Никаких дополнительных дополнений не потребовалось. - Использование Delphi 7 Pro. Спасибо, ПА, ты даже не представляешь, как сильно ты мне помог с этим! :) - person user513185; 19.11.2010
comment
P.S - Я загрузил файл .rc с помощью Project- ›Добавить в проект .. - Я искренне надеюсь, что это поможет другим, кто столкнется с этим. - person user513185; 19.11.2010