Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Bugs in den Webservices von Delphi ? (https://www.delphipraxis.net/76567-bugs-den-webservices-von-delphi.html)

LuckySpacy 6. Sep 2006 10:05


Bugs in den Webservices von Delphi ?
 
Ich beschäftige mich jetzt zum ersten mal mit den Webservices in Delphi.
Dabei habe ich eine wsdl-Datei bekommen, die ich in Delphi importiert habe.
Nachdem ich alles soweit hatte und den ersten Test gemacht habe, flog mir das Delphi-Programm um
die Ohren.

Meldung :
Zugriffsverletzung bei Adresse 00492069 in Modul 'WS_Test.exe'. Lesen von Adresse 00000000.

Nach langem suchen und debuggen bin ich auf das Problem gestoßen.
Und zwar ist eines der Rückgabe folgende:
<shipmentDate xsi:nil="true" xmlns="http://....." />

Hier wird ein Datumswert erwartet, der unter anderem so aussehen könnte:
<shipmentDate xmlns="http://.....">2006-04-16T09:02:50.665Z</shipmentDate>

Da aber nil übergeben wird, bekomme ich eine exception in xsBuiltIns.pas
Delphi-Quellcode:
procedure TXSDateTime.XSToNative(Value: WideString);
var
  BaseDate: TXSBaseDateTime;
begin
  BaseDate := GetBaseDateTime(Value);  // <-- Hier entsteht die exception, da Value = '' ist
  try
    FDateTime := Value;
  finally
    BaseDate.Free;
  end;
end;
Das ist Problemnummer 1

Hier das zweite Problem:
Es werden auch boolsche Werte übergeben.
Nach dem importieren der wsdl-Datei hat Delphi mir eigenständig ein Objekt generiert.
Unter anderem hat Delphi folgenden Eintrag gemacht:
property rueckrufAktion: Boolean read FrueckrufAktion write FrueckrufAktion;

Die Rückgabe in der Form eines xml-Doc sieht so aus:
<rueckrufAktion xmlns="http://....">0</rueckrufAktion>

Hier kommt es ebenfalls zu einer Fehlermeldung:
Ungültiges Eigenschaftselement: 0

Ändere ich den von Delphi generierten Code in
property rueckrufAktion: WideString read FrueckrufAktion write FrueckrufAktion;
um, dann kann ich ohne Fehler den Wert auslesen.

Meine Fragen:
Warum generiert mir Delphi eine boolsche Variable, wenn es beim Füllen zu einer Fehlermeldung führt?
Handelt es sich hierbei um einen Bug?

Was mache ich mit der Umsetzung des Datumswertes?
Ist es ein Fehler in Delphi?
Hat jemand schon das Problem gehabt?
Wie wurde das Problem gelöst?

LuckySpacy 16. Nov 2006 08:09

Re: Bugs in den Webservices von Delphi ?
 
Ich habe inzwischen einen neuen bug gefunden.
Im WSDL Importer funktioniert das generieren von dynamischen Arrays nicht.
Siehe dazu:
Webservices (wsdl) und dynamische Arrays

Das ist aber nicht der Grund dieses postings.

Durch das Suchen noch einer Lösung, habe ich Bugfixes gefunden, die zu diesem Thema hier passen.

Hier ist der Link:
Unofficial SOAP Bug Fixes

Touchdown 12. Jun 2013 15:17

AW: Bugs in den Webservices von Delphi ?
 
Hallo,

auch wenn dies ein sehr altes Thema ist, aber dieses Problem habe ich zur Zeit :cry:

Zitat:

Im WSDL Importer funktioniert das generieren von dynamischen Arrays nicht.
Der Link funktioniert nicht und dieser http://edn.embarcadero.com/article/28514# schein keine Lösung für das Problem zu bieten.

Hat jemand eine Lösung für dieses Problem?

Gruß

Touchdown

Bernhard Geyer 12. Jun 2013 15:20

AW: Bugs in den Webservices von Delphi ?
 
Welche Delphi-Version? D6/7 und Co haben bekanntermassen einige größere SOAP-Bugs.
AFAIK sind hier neuere Delphi-Versionen besser.

Touchdown 12. Jun 2013 15:25

AW: Bugs in den Webservices von Delphi ?
 
Hallo,

ich verwende Delphi 2007, es wundert mich auch etwas, dass dieses Problem immer noch besteht.

Bernhard Geyer 12. Jun 2013 15:39

AW: Bugs in den Webservices von Delphi ?
 
Zitat:

Zitat von Touchdown (Beitrag 1218385)
Hallo,

ich verwende Delphi 2007, es wundert mich auch etwas, dass dieses Problem immer noch besteht.

Weiß jetzt nicht ob D2007 schon zu den neuen Delphi-Versionen zählt bei der die SOAP-Implementierung grundlegend überarbeitet wurde.

Touchdown 12. Jun 2013 15:59

AW: Bugs in den Webservices von Delphi ?
 
Ich hab eine Lösung gefunden, es ist der Hammer.

Geht nicht:
Code:
setlength(liste, 1);    
inputData.liste := liste;

Funktioniert, kein Fehler:
Code:
inputData.liste := liste;
setlength(liste, 1);
Da bin ich echt platt :-D

Delphi ist vollkommen schuldlos, aber ich hatte schon früher Probleme, deswegen war ich doch sehr fixiert auf die Soap Komponenten ...

Touchdown 13. Jun 2013 12:31

AW: Bugs in den Webservices von Delphi ?
 
Dies war nur ein Workaround, aus einem technischem Fehler wurde ein fachlicher. Das entsprechende Feld war nicht mehr in der XML und so kann dieser Wert nicht übertragen werden.

Hat jemand eine Idee welche Komponenten Source für die XML Erzeugung verantwortlich ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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