Cita:
Empezado por ElKurgan
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