Я следовал учебнику здесь , чтобы узнать, как включить файл в EXE-файл.Хотя я успешно получил скомпилированное изображение PNG, когда дело доходит до его использования, я безуспешно.
MyResources.rc
LOGO_PNG RCDATA Resources\Logo.png
MyConsoleUnit.pas
const
RES_LOGO_PNG = 'LOGO_PNG';
implementation
{$R *.dfm}
{$R 'MyResources.res' 'MyResources.rc'}
Теперь это немногосбивает с толку для меня.Я должен работать со всеми потоками, без файлов.Я внедрил это PNG-изображение Logo.png
, так как этот ресурс должен передаваться обратно как контент (как поток), когда /Logo.png
запрашивается с веб-сервера.Я также следовал очень простому руководству для этого:
procedure TMyWebConsole.MyWebConsoleLogoAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
RS: TResourceStream;
begin
RS := TResourceStream.Create(HInstance, RES_LOGO_PNG, RT_RCDATA);
try
Response.ContentType:= 'image/png';
RS.SaveToStream(Response.ContentStream);
finally
RS.Free;
end;
end;
Проблема в том, что когда эта функция вызывается (на SaveToStream
), я получаю нарушение прав доступа.Веб-браузер на стороне клиента получает то же сообщение об ошибке, что и содержимое «файла PNG».
![AV](https://i.stack.imgur.com/ZBKms.png)
Так почему же это происходит?Что я делаю не так?