Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-12-2010
gcaffe gcaffe is offline
Miembro
 
Registrado: oct 2004
Posts: 53
Poder: 20
gcaffe Va por buen camino
Pasar datos a una clase de un WS

Hola:
estoy desarrollando una aplicación SOAP con Delphi 2010, tengo los proxy consegidos a traves de WSDL Importer. Logro establecer una sessión y consumo algunos métodos sencillos.
La dificultad se me presenta cuando uno la property de los datos es de un tipo desconocido para Delphi, por ejemplo property Array_Of_OriginCode, hay otros similares como se muestran en el código de abajo
La Calse que uso esta definida en el Proxy así;
Código Delphi [-]
  PackageTourProductAvailRQ = class(TRemotable)
  private
    FProductCode: Array_Of_ProductCode2;
    FProductCode_Specified: boolean;
    FBrochureCode: Array_Of_BrochureCodeType;
    FBrochureCode_Specified: boolean;
    FBrochureExcluded: Array_Of_BrochureCodeType;
    FBrochureExcluded_Specified: boolean;
    FProviderCode: Array_Of_ProviderCode2;
    FProviderCode_Specified: boolean;
    FOriginCode: Array_Of_OriginCode;
    FOriginCode_Specified: boolean;
    FProductConfigurations: ProductConfigurations;
    FProductConfigurations_Specified: boolean;
    FOfferIndicator: Boolean;
    FOfferIndicator_Specified: boolean;
    FFirstDepartureDate: TXSDate;
    FLastDepartureDate: TXSDate;
    FLastDepartureDate_Specified: boolean;
    FNumberOfDepartures: TXSDecimal;
    FNumberOfDepartures_Specified: boolean;
    FRequestedAcomodations: RequestedAcomodations2;
    FRequestedAcomodations_Specified: boolean;
    procedure SetProductCode(Index: Integer; const AArray_Of_ProductCode2: Array_Of_ProductCode2);
    function  ProductCode_Specified(Index: Integer): boolean;
    procedure SetBrochureCode(Index: Integer; const AArray_Of_BrochureCodeType: Array_Of_BrochureCodeType);
    function  BrochureCode_Specified(Index: Integer): boolean;
    procedure SetBrochureExcluded(Index: Integer; const AArray_Of_BrochureCodeType: Array_Of_BrochureCodeType);
    function  BrochureExcluded_Specified(Index: Integer): boolean;
    procedure SetProviderCode(Index: Integer; const AArray_Of_ProviderCode2: Array_Of_ProviderCode2);
    function  ProviderCode_Specified(Index: Integer): boolean;
    procedure SetOriginCode(Index: Integer; const AArray_Of_OriginCode: Array_Of_OriginCode);
    function  OriginCode_Specified(Index: Integer): boolean;
    procedure SetProductConfigurations(Index: Integer; const AProductConfigurations: ProductConfigurations);
    function  ProductConfigurations_Specified(Index: Integer): boolean;
    procedure SetOfferIndicator(Index: Integer; const ABoolean: Boolean);
    function  OfferIndicator_Specified(Index: Integer): boolean;
    procedure SetLastDepartureDate(Index: Integer; const ATXSDate: TXSDate);
    function  LastDepartureDate_Specified(Index: Integer): boolean;
    procedure SetNumberOfDepartures(Index: Integer; const ATXSDecimal: TXSDecimal);
    function  NumberOfDepartures_Specified(Index: Integer): boolean;
    procedure SetRequestedAcomodations(Index: Integer; const ARequestedAcomodations2: RequestedAcomodations2);
    function  RequestedAcomodations_Specified(Index: Integer): boolean;
  public
    constructor Create; override;
    destructor Destroy; override;
  published
    property ProductCode:           Array_Of_ProductCode2      Index (IS_OPTN or IS_UNBD) read FProductCode write SetProductCode stored ProductCode_Specified;
    property BrochureCode:          Array_Of_BrochureCodeType  Index (IS_OPTN or IS_UNBD) read FBrochureCode write SetBrochureCode stored BrochureCode_Specified;
    property BrochureExcluded:      Array_Of_BrochureCodeType  Index (IS_OPTN or IS_UNBD) read FBrochureExcluded write SetBrochureExcluded stored BrochureExcluded_Specified;
    property ProviderCode:          Array_Of_ProviderCode2     Index (IS_OPTN or IS_UNBD) read FProviderCode write SetProviderCode stored ProviderCode_Specified;
    property OriginCode:            Array_Of_OriginCode        Index (IS_OPTN or IS_UNBD) read FOriginCode write SetOriginCode stored OriginCode_Specified;
    property ProductConfigurations: ProductConfigurations      Index (IS_OPTN) read FProductConfigurations write SetProductConfigurations stored ProductConfigurations_Specified;
    property OfferIndicator:        Boolean                    Index (IS_OPTN) read FOfferIndicator write SetOfferIndicator stored OfferIndicator_Specified;
    property FirstDepartureDate:    TXSDate                    read FFirstDepartureDate write FFirstDepartureDate;
    property LastDepartureDate:     TXSDate                    Index (IS_OPTN) read FLastDepartureDate write SetLastDepartureDate stored LastDepartureDate_Specified;
    property NumberOfDepartures:    TXSDecimal                 Index (IS_OPTN) read FNumberOfDepartures write SetNumberOfDepartures stored NumberOfDepartures_Specified;
    property RequestedAcomodations: RequestedAcomodations2     Index (IS_OPTN) read FRequestedAcomodations write SetRequestedAcomodations stored RequestedAcomodations_Specified;
  end;

En el procedimeinto que uso está así y compila OK:
Código Delphi [-]
procedure TfrmMain.btnCargaOfertaClick(Sender: TObject);
var
   FIni, FFin: TXSDate;
   Nchs: TXSDecimal;
   SS: SessionSoapHeader;
   RQ: PackageTourProductAvailRQ;
   RS: PackageTourProductAvailResult;
   i, j, k: integer;
   Prd: Array_Of_ProductCode2;
   Ori: Array_Of_OriginCode;
begin
   SS := OtaSessionSoapHeader.Create;
   RQ := OTA_OrizoniaPackageTourProductAvailRQ.Create;
   Nchs := TXSDecimal.Create;
   Nchs.DecimalString := Format('%d', [7]);
   FIni := TXSDate.Create;
   FFin := TXSDate.Create;
   try
      SS.ApiSessionId := DameSession(Sender);  // Me da el número de sesión y funciona OK
(*)      Prd[1] := 'PD02';                        // Como prueba este producto y Falla en ejecución
      Ori[1] := 'MAD';
      RQ.ProductCode := Prd;
      RQ.OriginCode := Ori;
//      RQ.ProductConfigurations;                // RQ solo me devuelve esta propiedad no hay ProductConfiguration
      RQ.OfferIndicator := False;
      RQ.FirstDepartureDate.XSToNative(DateToStr(Date+1));
      RQ.LastDepartureDate.XSToNative(DateToStr(Date+8));
      RS := GetPackageTourServiceSoap(True,'',HTTPRIO2).OTA_OrizoniaPackageTourProductAvail(RQ);
      // Aqui de averigua el resultado
      with RS do begin
        // Falta codificar
      end;
   finally
      RQ.Free;
      RS.Free;
      Nchs.Free;
      FIni.Free;
      FFin.Free;
   end;
end;

La ayuda que les pido es que me orienten como debo hacer referencia a ese tipo de propiedad ya que en la linea marcada con (*) da un EAccessViolation.
He probado definir de varias formas Prd y Ori pero no acierto.

Muchas gracias.
Responder Con Cita
 



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
clase que contiene otra clase definida de forma posterior astwin OOP 5 20-02-2009 11:26:55
¿¿Es posible pasar una clase como parámetro con el modificador var?? PaFernan99 OOP 3 09-02-2009 18:49:00
Clase Que Guarde Datos En Base De Datos sdiaz1983 Conexión con bases de datos 2 03-05-2008 01:50:33
Como pasar datos de una hoja de Excel a Bases de Datos de Paradox Goyo OOP 1 06-02-2007 01:57:20
Error al intentar acceder a datos desde una Clase chico_bds OOP 5 18-01-2007 18:59:32


La franja horaria es GMT +2. Ahora son las 20:48:53.


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