Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-07-2010
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Exclamation Definicion de arrays complejos

Buenas a tod@s,

Tengo el siguiente problemón.

Resulta que tengo q hacer uso de un servicio web que define un tipo complejo llamado Complejo y un array del tipo Complejo llamado ComplejoArray, es decir, define:
Código Delphi [-]
Complejo = class;
ComplejoArray = array of Complejo;

Al hacer uso del servicio web a través de su función Guardar_Complejo me arroja una excepción de 'Cuerpo de XML mal formado o con datos no esperados'. Estudiando la otra parte su código del servicio web para ver el por qué se arroja esta excepción ha visto que parseando un fichero bien formado y el mío existe la siguiente diferencia:

Código Delphi [-]
//Su fichero xml
(
     [item] =>  
 Array
             (
                        //Cuerpo de su array
             )
 
 )
//mi fichero xml
(
     [0] =>  Array
         (
                    //Cuerpo de mi array
        )
 
 )

Como se puede ver su fichero xml contiene la etiqueta item del que carece el mío. Me comenta que puede ser debido a q el tipo de array especificado para mi envío no sea del tipo correcto, es decir, del tipo ComplejoArray

La definición de la función que se usa es:
Código Delphi [-]
function Guardar_Complejo(const complejos: ComplejosArray): String; stdcall;

Yo por mi parte en mi código hago lo siguiente:
Código Delphi [-]
procedure UsarServicioWeb;
var
  VarComplejo : Complejo;
  ArrayVarComplejo : ComplejoArray;
begin
  VarComplejo := Complejo.Create;
  SetLength(ArrayVarComplejo,1);
  ArrayVarComplejo[0] := VarComplejo;
  Guardar_Complejos(ArrayVarComplejo);
end;

Es evidente que falta código y sólo pongo lo que creo relevante. No sé si es que defino mal el array ComplejoArray ya que la función recibe un parámetro const.

La verdad es que estoy muy despistado y no se que puede ser ya que es la primera vez que uso algo así.

Si alguien pudiese ayudarme estaría muy agradecido.

Gracias y un saludo a todos!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #2  
Antiguo 15-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
Cita:
No sé si es que defino mal el array ComplejoArray ya que la función recibe un parámetro const.
En lo personal he trabajado con Arrays y la manera de pasar los parámetros para evitar errores es enviando una variable.
¿por que no crear tu funcion asi? :
function Guardar_Complejo(complejos: ComplejosArray): String; stdcall;


donde complejos se crea justo como indicas.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #3  
Antiguo 19-07-2010
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola Jac fcc,

Gracias por tu aportación. Probé tu posible solución pero me seguía dando el mismo error.

Al final y tras mucho calentarse uno la cabeza hemos podido ver que el error no estaba en la definición del array sino en el propio funcionamiento de delphi.

Me explico. Yo lo que tenía que hacer es consumir un servicio web. Los servicios web se basan en el intercambio de mensajes xml. Al yo importar el servicio web se me importaba una funciónn a la que había que llamar y pasarle como parámetro el array complejo. La llamada a esta función me creaba de forma transparente a mi el mensaje xml y este mensaje xml no estaba exactamente en el formato que se esperaba en el otro extremo y de ahí la excepción.

Como conclusión el array estaba bien definido y era el mensaje xml el que estaba mal definido por así decirlo.

Otra posible solución sería crear yo el mensaje xml y hacer un post http aunque esto es ya otro tema de debate que tendré que ver como se hace.

Muchas gracias y un saludo!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #4  
Antiguo 20-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
pendiente

muy interesante vejerf,
estaré pendiente de tu solucion,
por el momento no estoy en el ambiente web, pero lo haré muy pronto
y como siempre se aprende mucho de todos los chicos del Foro.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Caracteres complejos o mixtos escafandra API de Windows 1 11-08-2008 23:27:24
administrar proyectos complejos en delphi.. pvizcay Varios 9 14-09-2007 23:39:57
Manejo de números complejos en delphi yohuali Varios 3 22-07-2006 01:02:58
Numeros complejos trabuc Varios 2 19-01-2005 14:31:16
Definición de uso de componentes JorgeBec Varios 1 27-10-2004 17:43:45


La franja horaria es GMT +2. Ahora son las 19:33:26.


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
Copyright 1996-2007 Club Delphi