GARANTIR DESCONTO

Fórum Sobre função Assign #274294

28/03/2005

0

pessoal tenho um objeto Resultado da Classe TPicture e outro Imagem da classe TJPEGImage quando tento fazer o seguinte método
Resultado.Assign(Imagem);
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...


Bruno Belchior

Bruno Belchior

Responder

Posts

28/03/2005

Massuda

...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 seria
Resultado.Picture.Assign(Imagem);



Responder

Gostei + 0

28/03/2005

Bruno Belchior

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;



Responder

Gostei + 0

28/03/2005

Bruno Belchior

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;



Responder

Gostei + 0

28/03/2005

Massuda

Acho que ainda tem um problema com seu código...

Quando a linha...
Result := Resultado;
é executada, tanto Result como Resultado se referem ao mesmo objeto TPicture. Entretanto, quando você faz...
FreeAndNil(Resultado);
você está destruindo/liberando o objeto TPicture, embora Result ainda se refira ao (finado) objeto TPicture.


Responder

Gostei + 0

29/03/2005

Bruno Belchior

é 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...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar