Sobre função Assign
pessoal tenho um objeto Resultado da Classe TPicture e outro Imagem da classe TJPEGImage quando tento fazer o seguinte método me dá o seguinte erro: Cannot assign a TJPEGImage to a TImage... não entendo pois uso esse código em outros lugares e meus objetos estão criados...
Resultado.Assign(Imagem);
Bruno Belchior
Curtidas 0
Respostas
Massuda
28/03/2005
...me dá o seguinte erro: Cannot assign a TJPEGImage to a TImage
Essa mensagem dá impressão que Resultado é do tipo TImage ao invés de TPicture. Se for isso, o correto seriaResultado.Picture.Assign(Imagem);
GOSTEI 0
Bruno Belchior
28/03/2005
tem razão mas não é olha só o código:
function RetornaImagemDeArquivoDeRecursos (IdImagem: Smallint): TPicture; var MyJPG: TJPEGImage; ResStream: TResourceStream; Resultado: TPicture; begin MyJPG := TJPEGImage.Create; ResStream := TResourceStream.CreateFromID(HInstance, IdImagem, RT_RCDATA); Resultado := nil; try MyJPG.LoadFromStream(ResStream); Resultado.Assign(MyJPG); finally Result := Resultado; FreeAndNil(MyJPG); FreeAndNil(ResStream); FreeAndNil(Resultado); end; end;
GOSTEI 0
Bruno Belchior
28/03/2005
ops me precipitei agora com esse código funcionou...
function RetornaImagemDeArquivoDeRecursos (IdImagem: Smallint): TPicture; var MyJPG: TJPEGImage; ResStream: TResourceStream; Resultado: TPicture; begin MyJPG := TJPEGImage.Create; ResStream := TResourceStream.CreateFromID(HInstance, IdImagem, RT_RCDATA); Resultado := TPicture.Create; try MyJPG.LoadFromStream(ResStream); Resultado.Assign(MyJPG); finally Result := Resultado; FreeAndNil(MyJPG); FreeAndNil(ResStream); FreeAndNil(Resultado); end; end;
GOSTEI 0
Massuda
28/03/2005
Acho que ainda tem um problema com seu código...
Quando a linha...é executada, tanto Result como Resultado se referem ao mesmo objeto TPicture. Entretanto, quando você faz...você está destruindo/liberando o objeto TPicture, embora Result ainda se refira ao (finado) objeto TPicture.
Quando a linha...
Result := Resultado;
FreeAndNil(Resultado);
GOSTEI 0
Bruno Belchior
28/03/2005
é realmente funcionou, porém qdo fui rodar minha classe de teste vi que qdo tentava dar um ShowModal no formulário contendo o TImage que recebia a TPicture em questão, dava um erro de apontamente inválido... mais uma vez obrigado...
GOSTEI 0