AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Webservice Rückgabe komplexe Datenstruktur
Thema durchsuchen
Ansicht
Themen-Optionen

Webservice Rückgabe komplexe Datenstruktur

Ein Thema von af99 · begonnen am 7. Jun 2011 · letzter Beitrag vom 16. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#1

Webservice Rückgabe komplexe Datenstruktur

  Alt 7. Jun 2011, 16:37
Hallo Zusammen,

ich versuche verzweifelt eine Antwort von einem Webservice zu erhalten leider scheitert scheinbar schon der Aufruf an der Datenstruktur.
Ich arbeite mit Delphi XE und habe die WSDL Datei mit dem Assistenten importiert.
Hier der Aufruf
Code:
procedure TForm4.BitBtn1Click(Sender: TObject);
var
  gi: messageout;
  rein: messagein;
  myArray : array[0..1] of ItemType;
  myItemType : ItemType;

begin
  gi := messageout.Create;
  rein := messagein.Create;

  myItemType := ItemType.Create;
  myItemType.Article := '10000100';
  myItemType.Quantity := 1;

  myArray[0] := myItemType;

  rein.CustomerNo := 1;
  rein.Item[0] := myItemType;

  gi := (soe as web_getInventory).getInventory(rein);
  showmessage(inttostr(gi.Inventory.Item.Quantity));
  rein.Destroy;
  gi.Destroy;
end;
Hier die WSDL Datei
Code:
unit web;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

const
  IS_OPTN = $0001;
  IS_UNBD = $0002;
  IS_UNQL = $0008;
  IS_REF = $0080;


type
ItemTypeOut         = class;                  MessageIn           = class;                  ItemType            = class;                  InventoryType       = class;                  MessageOut          = class;                
Array_Of_ItemType = array of ItemType;
ItemTypeOut = class(TRemotable)
  private
    FArticle: string;
    FQuantity: Integer;
    FAvailabilityState: string;
    FAvailabilityQuantity: Integer;
    FAvailabilityQuantity_Specified: boolean;
    FAvailabiltyText: string;
    FAvailabiltyText_Specified: boolean;
    FArticleDescription_1: string;
    FArticleDescription_1_Specified: boolean;
    FArticleDescription_2: string;
    FArticleDescription_2_Specified: boolean;
    FArticleState: Integer;
    FArticleState_Specified: boolean;
    FArticleStateText: string;
    FArticleStateText_Specified: boolean;
    procedure SetAvailabilityQuantity(Index: Integer; const AInteger: Integer);
    function AvailabilityQuantity_Specified(Index: Integer): boolean;
    procedure SetAvailabiltyText(Index: Integer; const Astring: string);
    function AvailabiltyText_Specified(Index: Integer): boolean;
    procedure SetArticleDescription_1(Index: Integer; const Astring: string);
    function ArticleDescription_1_Specified(Index: Integer): boolean;
    procedure SetArticleDescription_2(Index: Integer; const Astring: string);
    function ArticleDescription_2_Specified(Index: Integer): boolean;
    procedure SetArticleState(Index: Integer; const AInteger: Integer);
    function ArticleState_Specified(Index: Integer): boolean;
    procedure SetArticleStateText(Index: Integer; const Astring: string);
    function ArticleStateText_Specified(Index: Integer): boolean;
  published
    property Article:             string  Index (IS_UNQL) read FArticle write FArticle;
    property Quantity:            Integer Index (IS_UNQL) read FQuantity write FQuantity;
    property AvailabilityState:   string  Index (IS_UNQL) read FAvailabilityState write FAvailabilityState;
    property AvailabilityQuantity: Integer Index (IS_OPTN or IS_UNQL) read FAvailabilityQuantity write SetAvailabilityQuantity stored AvailabilityQuantity_Specified;
    property AvailabiltyText:     string  Index (IS_OPTN or IS_UNQL) read FAvailabiltyText write SetAvailabiltyText stored AvailabiltyText_Specified;
    property ArticleDescription_1: string  Index (IS_OPTN or IS_UNQL) read FArticleDescription_1 write SetArticleDescription_1 stored ArticleDescription_1_Specified;
    property ArticleDescription_2: string  Index (IS_OPTN or IS_UNQL) read FArticleDescription_2 write SetArticleDescription_2 stored ArticleDescription_2_Specified;
    property ArticleState:        Integer Index (IS_OPTN or IS_UNQL) read FArticleState write SetArticleState stored ArticleState_Specified;
    property ArticleStateText:    string  Index (IS_OPTN or IS_UNQL) read FArticleStateText write SetArticleStateText stored ArticleStateText_Specified;
  end;
  MessageIn = class(TRemotable)
  private
    FCustomerNo: Integer;
    FItem: Array_Of_ItemType;
  public
    constructor Create; override;
    destructor Destroy; override;
  published
    property CustomerNo: Integer           Index (IS_UNQL) read FCustomerNo write FCustomerNo;
    property Item:      Array_Of_ItemType Index (IS_UNBD or IS_UNQL) read FItem write FItem;
  end;
  ItemType = class(TRemotable)
  private
    FArticle: string;
    FQuantity: Integer;
  published
    property Article: string  Index (IS_UNQL) read FArticle write FArticle;
    property Quantity: Integer Index (IS_UNQL) read FQuantity write FQuantity;
  end;

  InventoryType = class(TRemotable)
  private
    FCustomerNo: Integer;
    FItem: ItemTypeOut;
  public
    destructor Destroy; override;
  published
    property CustomerNo: Integer     Index (IS_UNQL) read FCustomerNo write FCustomerNo;
    property Item:      ItemTypeOut Index (IS_UNQL) read FItem write FItem;
  end;
  MessageOut = class(TRemotable)
  private
    FInventory: InventoryType;
  public
    constructor Create; override;
    destructor Destroy; override;
  published
    property Inventory: InventoryType Index (IS_UNQL) read FInventory write FInventory;
  end;
 web_getInventory = interface(IInvokable)
  ['{7ECC6115-0305-FA86-1773-54264E557E44}']

    // Entpacken nicht möglich:
    //     - Eingabe-Part verweist auf kein Element
    //     - Ausgabe-Part verweist auf kein Element
    function getInventory(const getInventoryIn: MessageIn): MessageOut; stdcall;
  end;

function Getweb_getInventory(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): web_getInventory;


implementation
  uses SysUtils;
...
Wenn ich das Programm nun schrittweise ausführe Taste "F8" dann springt die Ausführung komischerweise immer von der Programmzeile
rein.Item[0] := myItemType;
zur Programmzeile
end;
der Procedure procedure TForm4.BitBtn1Click(Sender: TObject); (siehe Source1) ohne die Programmzeilen dazwischen auszuführen. Auf dem End; kommt dann eine Exception.

Was mache ich falsch ???
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 7. Jun 2011, 16:40
... kommt dann eine Exception.
Und welche? Der Meldungstext ist hier oft hilfreich bei der Fehlersuche.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#3

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 7. Jun 2011, 16:54
Zugriffsverletzung bei Adresse 005612DE im Modul 'ws_client.exe'. Schreiben von Adresse 000000000.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 7. Jun 2011, 18:25
Zugriffsverletzung bei Adresse 005612DE im Modul 'ws_client.exe'. Schreiben von Adresse 000000000.
`

Und in welcher Zeile?

Edit: Steht dort ja, nicht gesehen
Lars
  Mit Zitat antworten Zitat
t0by

Registriert seit: 31. Mai 2011
7 Beiträge
 
#5

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 8. Jun 2011, 08:19
Als "Anfänger" sieht das für mich sieht das so aus als wenn rein.Item[0] keine Länge bekommen hat, da Item ja via "array of ItemType;" deklariert wurde.

Kann es sein das dort ein SetLength(rein.Item, 1); fehlt?

VG Toby
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#6

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 8. Jun 2011, 08:42
hmmmmm, ich bin mir nicht sicher ob ich das
SetLength(rein.Item, 1);
brauche.
Ich bekomme jedenfalls folgenden Fehler
[DCC Fehler] main.pas(61): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#7

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 8. Jun 2011, 12:59
schups
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 8. Jun 2011, 13:03
Du kennst unsere Richtlinie zum Thema Pushen?
Markus Kinzler
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#9

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 15. Jun 2011, 16:29
Weis denn wirklich keiner was ???
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Webservice Rückgabe komplexe Datenstruktur

  Alt 15. Jun 2011, 16:55
Wo und wie erstellst du Soe? Schau dir Getweb_getInventory an.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz