Come recuperare una risorsa dall'interno di un tWebModule
-
01-07-2019 - |
Domanda
Sto cercando di estrarre un'immagine GIF incorporata come risorsa nella mia dll ISAPI utilizzando la tecnologia WebBroker.La risorsa è stata aggiunta alla DLL utilizzando il seguente codice RC:
LOGO_GIF RCDATA logo.gif
Utilizzando Resource Explorer ho verificato che sia correttamente nella DLL.
l'utilizzo del codice seguente genera sempre un'eccezione, "risorsa non trovata" (utilizzando Delphi 2009)
var
rc : tResourceStream;
begin
rc := tResourceStream.Create(hInstance,'LOGO_GIF','RCDATA');
end;
Soluzione
RCDATA è un predefinito tipo di risorsa con un ID intero di RT_RCDATA (dichiarato nell'unità Tipi).
Prova ad accedervi in questo modo:
rc := tResourceStream.Create(hInstance,'LOGO_GIF', MakeIntResource(RT_RCDATA));
Altri suggerimenti
Se ricordo bene, in realtà hai a che fare con un'istanza del server web, non con la DLL.Tuttavia non ricordo il lavoro svolto, ma questa è la spiegazione del motivo per cui non funziona.Speriamo che qualcun altro possa partire da questo.
Utilizza il tuo tipo di risorsa arbitrario come GIF:
LOGO_GIF GIF logo.gif
quindi utilizzare
rc := tResourceStream.Create(hInstance,'LOGO_GIF','GIF');
o semplicemente utilizzare
rc := tResourceStream.Create(hInstance,'LOGO_GIF', RT_RCDATA);
o semplicemente utilizzare
rc := tResourceStream.Create(hInstance,'LOGO_GIF', RT__RCDATA);
Questo.Funziona come un fascino.
Anche D2009 qui presentava lo stesso problema, ma stava cercando di estrarre TStringsList dalla DLL.
Grazie.