Du solltest die gerade erzeugte TGraphic-Instanz nicht gleich wieder freigeben. Schließlich brauchst du die ja noch als Funktionsrückgabe.
Das ganze mal etwas kompakter geschrieben:
Delphi-Quellcode:
function GetGraphicFromResource(Name: String): TGraphic;
var
RS: TResourceStream;
FileExtension: String;
begin
FileExtension := LowerCase(Copy(Name, Length(Name) - 2, 3));
result := nil;
if FileExtension = 'bmp' then begin
result := TBitmap.Create;
end
else if (FileExtension = 'jpg') or (FileExtension = 'jpeg') then begin
result := TJPEGImage.Create;
end
else if FileExtension = 'png' then begin
result := TPNGImage.Create;
end
else if FileExtension = 'gif' then begin
result := TGIFImage.Create;
end;
if result <> nil then begin
RS := TResourceStream.Create(hInstance, Name, RT_RCDATA);
try
result.LoadFromStream(RS);
finally
RS.Free;
end;
showmessage('gr vorhanden');
end;
end;