![]() |
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:
Das ist Problemnummer 1
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; 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? |
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: ![]() 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: ![]() |
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:
![]() Hat jemand eine Lösung für dieses Problem? Gruß Touchdown |
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. |
AW: Bugs in den Webservices von Delphi ?
Hallo,
ich verwende Delphi 2007, es wundert mich auch etwas, dass dieses Problem immer noch besteht. |
AW: Bugs in den Webservices von Delphi ?
Zitat:
|
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:
Da bin ich echt platt :-D
inputData.liste := liste;
setlength(liste, 1); Delphi ist vollkommen schuldlos, aber ich hatte schon früher Probleme, deswegen war ich doch sehr fixiert auf die Soap Komponenten ... |
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 05:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz