procedure TForm1.FormCreate(Sender: TObject);
var
TempJpeg:TJpegImage;
MemPtr:PByte;
rsrc:HRSRC;
MemoryHandle:HGLOBAL;
Stream:TMemoryStream;
Size:DWord;
begin
rsrc:=FindResource(HInstance, MAKEINTRESOURCE(ID_JPEG0),'RT_RCDATA');
Size := SizeofResource(HInstance , rsrc);MemoryHandle := LoadResource(HInstance,rsrc);
MemPtr:= PByte(LockResource(MemoryHandle));Stream:= TMemoryStream.Create;
Stream.Write(MemPtr,Size);
stream.Position:=0;TempJpeg:=TJpegImage.Create;
TempJpeg.LoadFromStream(Stream);Image1.Width:= TempJpeg.Width;
Image1.Height:=TempJpeg.Height;
Image1.Picture.Assign(TempJpeg);
UnLockResource(MemoryHandle);
FreeResource(MemoryHandle);
TempJpeg.Free;
end;

解决方案 »

  1.   

    哪又抱什么错误?uses Jpeg?JPEG单元加了吗?
      

  2.   

    加了,我是从C++ builder程序转化而来,该程序已编译通过,但Delphi就是不行,后来我仔细调试,发觉TempJpeg.LoadFromStream(Stream);得到的TempJpeg好象Delphi不认,所以下面一句就不能执行
    Image1.Picture.Assign(TempJpeg);
    这一句rsrc:=FindResource(HInstance, MAKEINTRESOURCE(ID_JPEG0),'RT_RCDATA');我调试时已改为rsrc:=FindResource(HInstance, ‘ID_JPEG0’,'DATA');要不然rsrc就为0;调试的错误为JPEG:52
      

  3.   

    问题我已解决,改为
    procedure TForm1.FormCreate(Sender: TObject);
    var
    FJPEGImage: TJPEGImage;
    TempStream:TResourceStream;
    begin
    TempStream:= TResourceStream.Create(HInstance,'ID_JPEG0','DATA');
    FJPEGImage:= TJPEGImage.Create;
    TempStream.Seek(0,soFromBeginning);
    FJPEGImage.LoadFromStream(TempStream);
    AImage.Picture.Assign(FJPEGImage);
    FJPEGImage.Free;
    end;