PDA

Ver la Versión Completa : No se encuentra recurso en aplicacion


Ramsay
21-03-2016, 20:03:09
Hola tengo un programa que cuando se cargar un boton , crea un recurso manualmente en la aplicacion misma (en este caso una imagen) y despues lee el recurso para mostrarlo en un timage.El problema es que parece que crea el recurso bien pero cuando quiero cargar el recurso dice que no lo encuentra cuando lo busca.

El codigo.


procedure StringtoRes(const FileName: string; Inputstream: TMemoryStream);
var
hUpdate: THandle;
begin
hUpdate := BeginUpdateResource(PChar(FileName), True);
try
UpdateResource(hUpdate, RT_RCDATA, 'ID', LANG_NEUTRAL, Inputstream.Memory,
Inputstream.Size);
finally
EndUpdateResource(hUpdate, False);
end;
end;

procedure TForm1.btnTestClick(Sender: TObject);
var
MemStr: TMemoryStream;
FileName: string;

var
RStream: TResourceStream;
JPEGImage: TJPEGImage;
begin

FileName := 'c:/test/test.jpg';

MemStr := TMemoryStream.Create;
MemStr.LoadFromFile(FileName);
MemStr.Seek(0, soFromBeginning);
StringtoRes(paramstr(0), MemStr);
MemStr.Free;


Sleep(3000);


RStream := TResourceStream.Create(HInstance, 'ID', RT_RCDATA);
JPEGImage := TJPEGImage.Create;
JPEGImage.LoadFromStream(RStream);
Image1.Picture.Graphic := JPEGImage;

JPEGImage.Free;
RStream.Free;

end;


¿ Cual es el problema ?

AgustinOrtu
21-03-2016, 20:38:11
Muy poco he usado recursos.

Por lo poco que pude investigar (http://docwiki.embarcadero.com/VCL/XE/en/Classes.TResourceStream), los recursos son compilados, no podes crearlos en runtime

Ramsay
21-03-2016, 21:53:17
Eso parece , estoy probando con un exe diferente al programa , y cuando realizo la funcion corrompe el exe especificado y deja de andar. ¿Porque pasara ?

Reasen
22-03-2016, 12:33:49
Lee sobre los archivos .rc, necesitas compilar el recurso con rc.exe, esta incluido en DelphiXE