AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wsdl-klasse property auslesen

Ein Thema von jsp · begonnen am 23. Aug 2019 · letzter Beitrag vom 5. Sep 2019
Antwort Antwort
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#1

wsdl-klasse property auslesen

  Alt 23. Aug 2019, 15:07
Hallo alle,

ich habe folgende Klassen welche zum auslesen von xml-Files dienen.

Delphi-Quellcode:
  // XML : NPKNode, global, <complexType>
  // Namespace : http://www.crbnet.ch/crbox_partner
  // ************************************************************************ //
  NPKNode = class(TRemotable)
  private
    Fnumber: string;
    Fnumber_Specified: boolean;
    Ftitle: string;
    Ftitle_Specified: boolean;
    Fdescription: string;
    Fdescription_Specified: boolean;
    FsubNodes: ArrayOfNPKNode;
    FsubNodes_Specified: boolean;
    procedure Setnumber(Index: Integer; const Astring: string);
    function number_Specified(Index: Integer): boolean;
    procedure Settitle(Index: Integer; const Astring: string);
    function title_Specified(Index: Integer): boolean;
    procedure Setdescription(Index: Integer; const Astring: string);
    function description_Specified(Index: Integer): boolean;
    procedure SetsubNodes(Index: Integer; const AArrayOfNPKNode: ArrayOfNPKNode);
    function subNodes_Specified(Index: Integer): boolean;
  public
    destructor Destroy; override;
  published
    property number: string Index (IS_OPTN) read Fnumber write Setnumber stored number_Specified;
    property title: string Index (IS_OPTN) read Ftitle write Settitle stored title_Specified;
    property description: string Index (IS_OPTN) read Fdescription write Setdescription stored description_Specified;
    property subNodes: ArrayOfNPKNode Index (IS_OPTN) read FsubNodes write SetsubNodes stored subNodes_Specified;
  end;

  // ************************************************************************ //
  // XML : NPKPositionBase, global, <complexType>
  // Namespace : http://www.crbnet.ch/crbox_partner
  // ************************************************************************ //
  NPKPositionBase = class(NPKNode)
  private
    FentryStart: Integer;
    Fhint: string;
    Fhint_Specified: boolean;
    FtitleReadOnly: Integer;
    FprodNormCode: string;
    FprodNormCode_Specified: boolean;
    FpublicationCode: string;
    FpublicationCode_Specified: boolean;
    FdrawingID: string;
    FdrawingID_Specified: boolean;
    procedure Sethint(Index: Integer; const Astring: string);
    function hint_Specified(Index: Integer): boolean;
    procedure SetprodNormCode(Index: Integer; const Astring: string);
    function prodNormCode_Specified(Index: Integer): boolean;
    procedure SetpublicationCode(Index: Integer; const Astring: string);
    function publicationCode_Specified(Index: Integer): boolean;
    procedure SetdrawingID(Index: Integer; const Astring: string);
    function drawingID_Specified(Index: Integer): boolean;
  published
    property entryStart: Integer read FentryStart write FentryStart;
    property hint: string Index (IS_OPTN) read Fhint write Sethint stored hint_Specified;
    property titleReadOnly: Integer read FtitleReadOnly write FtitleReadOnly;
    property prodNormCode: string Index (IS_OPTN) read FprodNormCode write SetprodNormCode stored prodNormCode_Specified;
    property publicationCode: string Index (IS_OPTN) read FpublicationCode write SetpublicationCode stored publicationCode_Specified;
    property drawingID: string Index (IS_OPTN) read FdrawingID write SetdrawingID stored drawingID_Specified;
  end;
Ich lese z.B. das property 'hint' Im debugger sehe ich dass Fhint_Specified true oder false ist.
Wenn der Wert false ist, und ich 'hint' einem String zuweise, gibt es einen Stackoverflow.
Wie komme ich an Fhint_specified ran?

Gruss, Jörn
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: wsdl-klasse property auslesen

  Alt 23. Aug 2019, 15:33
Hallo,
jetzt musste ich mich doch wirklich mal belesen, was das stored ist ...

https://stackoverflow.com/questions/...word-in-delphi

Kann es sein, dass du das falsch einsetzt?

Setze doch mal einen Breakpoint auf hint_Specified und hint_Specified.
Die scheinen sich ja gegenseitig aufzurufen.

Zitat:
ich 'hint' einem String zuweise
Weist Du hint einem String oder einen String zu?

S:= hint oder hint:= 'bla'
Heiko

Geändert von hoika (23. Aug 2019 um 15:35 Uhr)
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#3

AW: wsdl-klasse property auslesen

  Alt 23. Aug 2019, 15:49
Hallo Heiko

danke erst mal. Das mit dem stored, und wie ich da rankomme, muss ich noch rausfinden.

Und ich weise den hint einem String zu.

S := blubb.hint;

Gruss, Jörn
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: wsdl-klasse property auslesen

  Alt 23. Aug 2019, 15:52
Könntest du bitte noch die Implementation der beiden Klassen posten? Deine Klasseninterfaces sehen soweit ganz normal aus. Müsste also an der Implementation liegen. Sind das Klassen einer SOAP Schnittstelle und verwendest du diese dann auch entsprechend mit dem Delphi SOAP Framework oder willst du diese dann irgendwie selber "vergewaltigen"?

Diese XXX_Specified und das stored müssen dich nicht interessieren. Das ist interner Code für das Delphi SOAP Framwork (RTTI), den du nicht abfragen kannst und auch nicht musst. Sobald Hint einen Wert gesetzt bekommt, wird dieses Specified = true. Damit bestimmt das Delphi SOAP Framework, ob eine entsprechende XML-Node geschrieben werden muss oder nicht.

@hoika
Diese Klassen hat der Delphi WSDL Importer erstellt und nicht jsp selber. Das ist also von Delphi erzeugter Code, an dem es nicht liegt.

Geändert von Rolf Frei (23. Aug 2019 um 16:08 Uhr)
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#5

AW: wsdl-klasse property auslesen

  Alt 26. Aug 2019, 07:16
Danke Rolf

Fakt ist, dass wenn Specified false ist, und ich 'Hint' einem String zuweisen möchte, gibt's einen Stackoveflow,
vermutlich weil einfach Müll in 'Hint' steht.
Ich habe versucht mit length, SizeOf, und wildem Pointergewürge dies abzufangen. Nada.
try except funktioniert zwar, finde ich aber hässlich.
Werde vermutlich die Daten selbst via xPath extrahieren. Für mich ist das irgendwie transparenter, kontrollierter.

Gruss, Jörn
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: wsdl-klasse property auslesen

  Alt 5. Sep 2019, 10:48
Jörn,

Habe deine Antwort leider erst heute gesehen. Sorry.

Ich glaube dir ja, dass du einen Stacküberlauf bekommst, aber aufgrund deines Codes sehe ich nicht woran das liegt. Daher wollte ich auch die Implementation der Klassen sehen. Normal ist das auf jeden Fall nicht. Ich nutze viel SOAP und diesen Fehler habe ich bisher noch nie gesehen. Deshalb auch meine Frage in welchen Zusammenhang du diese Klassen nutzt und wie du sie genau benutzt. In Rahmen einer SOAP Kommunikation oder willst du damit ein normales XML File verarbeiten, also etwas wofür das so nicht gemacht ist? Für normale XML Fies gibt es einen anderen Importer. Hast du eventuell den WDSL Importer genutzt, anstelle des normalen XML Imports?

Kannst du denn ein Demoprogramm zusammenstellen, inkl. XML Daten? Ich bin mir sicher, dass da bei deinem Code irgendwo ein Fehler vorliegt, der aber aufgrund der Interfaces nicht ersichtlich ist. Die Interfaces sehen absolut korrekt aus, so wie du sie gepostet hast.

Das ganze per try/except aubzufangen ist definitiv nicht der richtige Weg. Was heist denn "Müll im Hint"?

Gruss
Rolf

Geändert von Rolf Frei ( 5. Sep 2019 um 10:50 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:40 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