Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Error incompatibles types:'integer' and 'extended' (https://www.clubdelphi.com/foros/showthread.php?t=75663)

cincosoft 10-09-2011 21:23:16

Error incompatibles types:'integer' and 'extended'
 
Hola,

Tengo el código:

Código Delphi [-]
procedure TQRClientes.AsignarLogo(ImagenJPG: TJPEGImage;
  corriente: TMemoryStream; nom_campo: string; QRImage: TQRImage);
Var
  AltoOriginal, AnchoOriginal: Integer;
begin
   ImagenJPG := TJPEGImage.Create;
   corriente := TMemoryStream.Create;

   DMCLIENTES.QREMPRESA.Close;
   DMCLIENTES.QREMPRESA.Open;

   try
     if not DMCLIENTES.QREMPRESA.FieldByName(nom_campo).IsNull then begin
       TGraphicField(DMCLIENTES.QREMPRESA.FieldByName(nom_campo)).SaveToStream(corriente);
       corriente.Seek(0,soFromBeginning);
       ImagenJPG.LoadFromStream(corriente);

       AltoOriginal := ImagenJPG.Height;
       AnchoOriginal := ImagenJPG.Width;

       ImagenJPG.Height := QRImage.Height;
       ImagenJPG.Width := (AnchoOriginal*ImagenJPG.Height)/AltoOriginal;

En la última linea me da el error:
incompatibles types:'integer' and 'extended'

Alguien me puede indicar como arreglarlo?

Muchas gracias.

oscarac 10-09-2011 21:46:58

me parece que altoordinal debes declararla de otro tipo no integer

ecfisa 10-09-2011 21:55:51

Hola.

Lo que sucede que la propiedad Width de TJPEGImage es de tipo entero y le estas asignando un número flotante.

Deberías hacer:
Código Delphi [-]
  ...
   ImagenJPG.Width:= Trunc((AnchoOriginal*Img.Height)/AltoOriginal);
  ..

Saludos.

cincosoft 11-09-2011 14:26:41

Error: "Cannot change the size of a JPEG image."
 
Hola otra vez,

Así no me da error de compilación pero al ejecutar me da el siguiente error:

"Cannot change the size of a JPEG image."

Alquien me puede como hacer para evitar esto?

Muchas gracias.

Código Delphi [-]
procedure TQRClientes.AsignarLogo(ImagenJPG: TJPEGImage;
  corriente: TMemoryStream; nom_campo: string; QRImage: TQRImage);
Var
  AltoOriginal, AnchoOriginal: Integer;
begin
   ImagenJPG := TJPEGImage.Create;
   corriente := TMemoryStream.Create;

   DMCLIENTES.QREMPRESA.Close;
   DMCLIENTES.QREMPRESA.Open;

   try
     if not DMCLIENTES.QREMPRESA.FieldByName(nom_campo).IsNull then begin
       TGraphicField(DMCLIENTES.QREMPRESA.FieldByName(nom_campo)).SaveToStream(corriente);
       corriente.Seek(0,soFromBeginning);
       ImagenJPG.LoadFromStream(corriente);

       AltoOriginal := ImagenJPG.Height;
       AnchoOriginal := ImagenJPG.Width;

       ImagenJPG.Height := QRImage.Height;
       ImagenJPG.Width := round((AnchoOriginal*ImagenJPG.Height)/AltoOriginal);

ecfisa 11-09-2011 18:13:22

Hola cincosoft.

Es que no podes cambiar el valor del tamaño de la imágen almacenada, ImagenJPG (al menos no de este modo):
Código Delphi [-]
ImagenJPG.Width := round((AnchoOriginal*ImagenJPG.Height)/AltoOriginal);

Lo que sí podés hacer es cambiar el tamaño de visualización de la misma, QRImage:
Código Delphi [-]
QRImage.Width := round((AnchoOriginal*ImagenJPG.Height)/AltoOriginal);

Saludos.


La franja horaria es GMT +2. Ahora son las 20:30:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi