-1
リソースファイルからPNGImageをロードするリソースストリームからTPictureオブジェクトを返す関数があります。リソースからResourceStream経由で画像を返す
function getImage(AName : string; lvl : integer): TPicture;
var Loader : TResourceStream;
image : TPngImage;
begin
Image := TPngImage.Create;
try begin
Loader := TResourceStream.Create(hInstance, AName+'_l'+IntToStr(lvl) , RT_RCDATA);
Loader.Position := 0;
Image.LoadFromStream(Loader);
result.Graphic := Image;
end
finally
Image.Free;
Loader.Free;
end;
end;
コードの問題点を教えてください。 の画像のオブジェクトは常にで、と答えています。答えは、Webから検索して、リソースからTPictureに画像を読み込む方法ですが、役に立たない回答は見つかりませんでした。
このコードは完全に壊れています。結果は決して初期化されません。 Loaderが初期化されているかどうかに関係なく、Loaderを解放するので、try/finallyは間違っています。 Pointlessはストリームの位置をコード内のその時点にあるので0に設定します。 'Result'が' nil'ならランタイムAVエラーが発生するので、関数は必ず 'nil'を返しません。私は質問を閉じるために投票しています –
@lurkerはそれが不可能ではないでしょう –
それは不可能です。それはnilではないか、例外が発生したかのいずれかです。 –