Cómo recuperar un recurso desde un tWebModule
-
01-07-2019 - |
Pregunta
Estoy intentando extraer una imagen gif incrustada como recurso dentro de mi dll ISAPI utilizando la tecnología WebBroker.El recurso se agregó a la DLL usando el siguiente código RC:
LOGO_GIF RCDATA logo.gif
Usando el explorador de recursos verifiqué que está correctamente en la DLL.
El uso del siguiente código siempre arroja una excepción, "recurso no encontrado" (usando Delphi 2009)
var
rc : tResourceStream;
begin
rc := tResourceStream.Create(hInstance,'LOGO_GIF','RCDATA');
end;
Solución
RCDATA es un predefinido tipo de recurso con un ID entero de RT_RCDATA (declarado en la unidad Tipos).
Intenta acceder a él de esta manera:
rc := tResourceStream.Create(hInstance,'LOGO_GIF', MakeIntResource(RT_RCDATA));
Otros consejos
Si no recuerdo mal, en realidad estás tratando con una instancia del servidor web, no con la dll.Sin embargo, no recuerdo la solución, pero esa es la explicación de por qué eso no funciona.Esperemos que alguien más pueda aprovechar esto.
Utilice su propio tipo de recurso arbitrario como GIF:
LOGO_GIF GIF logo.gif
entonces usa
rc := tResourceStream.Create(hInstance,'LOGO_GIF','GIF');
o simplemente usar
rc := tResourceStream.Create(hInstance,'LOGO_GIF', RT_RCDATA);
o simplemente usar
rc := tResourceStream.Create(hInstancia,'LOGO_GIF', RT__RCDATA);
Este.Funciona de maravilla.
D2009 aquí también tuvo el mismo problema, pero estaba intentando sacar TStringsList de la DLL.
Gracias.