post icon

Convertir de Double a XSDecimal en Delphi

Hace unos días mostraba como convertir DateTime a XSDateTime, uno de los tipos de datos más ariscos en Delphi cuando debemos usar con SOAP, el Decimal, su equivalente en Delphi Double, para que sean compatibles debemos transformarlo al tipo XSDecimal.

Para ello no tenemos ninguna propiedad o método director, si no debemos valernos del tipo BCD (Código Binario Decimal), lo cual no es díficil realizarlo por suerte pero si algo engorroso 🙁

En el ejemplo veremos un Web Service que recibe un tipo de dato Decimal, y en delphi lo tenemos como Double en un DataSet, ambos lo convertimos primeramente en BCD, para que pueda finalmente transformarse en un tipo de dato estandar, el XSDecimal.

1
2
3
4
5
6
7
8
9
10
11
var
  monto : TXSDecimal; // objetos para convertir Double a XML Decimal
begin
  // reservar la memoria para los XML
  monto := TXSDecimal.Create;
 
   // Convertir a XML Decimal gracias al BCD
  monto.AsBCD := DM.DataSetASIGNACION.AsBCD;
 
  ws.Enviar(monto);
end;

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder