Ver Mensaje Individual
  #4  
Antiguo 23-10-2020
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Reputación: 14
darkamerico Va por buen camino
Red face gracias x responder

Cita:
Empezado por ElKurgan Ver Mensaje
Hola.

Creo que el problema te lo da la asignación de la foto.

En el Web Service viene definida como Base64, efectivamente:

<xs:element minOccurs="0" name="_foto" nillable="true" type="xs:base64Binary"/>

Por otro lado, estás asignando al Stream un array de bytes, y ese es el error que te devuelve Delphi:

[dcc32 Error] uMain.pas(73): E2010 Incompatible types: 'TStream' and 'System.TArray<System.Byte>'

Una posible solución es usar Indy para transformar el base 64 a Stream como se ve en este ejemplo; Ahí lo que hacen es cargar el base64 en un TStringStream y luego
cargarlo en la imagen de esta forma:

Código Delphi [-]AStringStream := TStringStream.Create(DecodedBase64); try AStringStream.Position := 0; imBase64.Picture.Bitmap.LoadFromStream(AStringStream); finally AStringStream.Free; end;

Espero que te sirva.

Un saludo



Amigo, Interesante sin duda el ejemplo que has citado, sin embargo ahi asumen que la imagen ya esta colocada en un componente TImage y realizan la conversion a base64 con una linea como esta:


Código Delphi [-]
imLoad.Picture.Graphic.SaveToStream(AImageStream);


En mi caso requiero tomar la cadena base64 del web service y cargarla a un Stream para luego cargarla en el componente TImage,
(el formato del base64 es Jpg por cierto) con una linea similar a esta:


Código Delphi [-]
Jpg.LoadFromStream([Stream]);


Hmmmm ando liado



Un abrazo
Responder Con Cita