Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Probleme beim import von WSDL Datei (https://www.delphipraxis.net/52763-probleme-beim-import-von-wsdl-datei.html)

saschab 3. Sep 2005 09:26


Probleme beim import von WSDL Datei
 
Hallo zusammen,

ich habe folgendes Problem ich schreibe gerade an einem Proggie das über die Webservices Schnitstelle von Amazon daten über Bücher suchen soll,

ich habe mir von der Amazon Seite die WSDL Runtergeladen.

Amazon Webservices WSDL

Diese wollte ich dann unter Delphi 7 Mit :
Datei/Neu/Weitere/Webservices/WSDL Import einlesen. Wähle die Datei aus und bekomme folgende Fehlermeldung:

Zitat:

---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 502A6695 in Modul 'dclsoap70.bpl'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------
Kann damit jemand was anfangen worin der Fehler liegen könnte?

Danke schonmal im vorraus

marabu 3. Sep 2005 09:38

Re: Probleme beim import von WSDL Datei
 
Hallo,

Lesen von Adresse 0 bedeutet immer, dass jemand über einen nil-pointer gestolpert ist. Du wirst irgendeine Initialisierung vergessen haben.

Grüße vom marabu

r_kerber 3. Sep 2005 12:55

Re: Probleme beim import von WSDL Datei
 
Ich kann das Problem in Delphi 7 reproduzieren. In Delphi2005.Win32 tritt dasselbe Problem auf. Es funktioniert in Delphi2005.Net!
@Marabu: Hier handelt es sich um einen Wizard der Firma Borland. Es liegt also kein eigenes "Verschulden" vor!

saschab 3. Sep 2005 15:44

Re: Probleme beim import von WSDL Datei
 
Danke für die schnelle Antwort, ich habe es mit ner anderen WDSL Datei probiert da ist das Prob nicht nur mit dieser kann vielleicht jemand nachschauen ob in der Datei was nicht stimmt die Amazon anbietet oder mir sagen wie ich die unter Delphi 7 ans laufen bekomme?

Danke schon mal

r_kerber 3. Sep 2005 15:57

Re: Probleme beim import von WSDL Datei
 
Zitat:

Zitat von saschab
...kann vielleicht jemand nachschauen ob in der Datei was nicht stimmt die Amazon anbietet oder mir sagen wie ich die unter Delphi 7 ans laufen bekomme?

Ich befürchte, daß ist ein Bug im WSDL-Importer. Und ob der für D7 noch behoben wird, wage ich zu bezweifeln. Da aber in späteren Delphi-Versionen auch noch vorkommt, habe ich ihn schon mal bei Borland gemeldet.

saschab 3. Sep 2005 16:44

Re: Probleme beim import von WSDL Datei
 
hi danke für die Antwort,

und nu habe keine Lust deswegen auf delphi2005.net umzustellen hast Du vielleicht ne idee wie man das prob noch lösen könnte?

Gibt es noch andere Importer die Frei sind?

danke

saschab 5. Sep 2005 13:44

Re: Probleme beim import von WSDL Datei
 
@r_kerber:

kannst Du mir mal den Weg beschreiben wie Du es eingelesen hast unter Delphi 2005 .NET ich bekomme das nicht hin, habe es testweise mal installiert vielleicht komme ich ja damit zurecht, ich kann ja auch troz .net mit delphi win32 programmieren oder ?

marabu 5. Sep 2005 18:02

Re: Probleme beim import von WSDL Datei
 
Hallo Rainer,

Zitat:

Zitat von r_kerber
Ich befürchte, daß ist ein Bug im WSDL-Importer. Und ob der für D7 noch behoben wird, wage ich zu bezweifeln. Da aber in späteren Delphi-Versionen auch noch vorkommt, habe ich ihn schon mal bei Borland gemeldet.

habe eben gerade ein wenig in BDN QC geschmökert - der Fehler in D2005 wurde schon vor 8 Monaten gemeldet. Wenn ich mir den Report dort so ansehe, dann wird saschab nicht nur auf D2005 umstellen, sondern auch die Sprache (C#) wechseln müssen, damit er die WSDL Datei von Amazon verarbeiten kann - oder?

Grüße vom marabu

saschab 5. Sep 2005 21:03

Re: Probleme beim import von WSDL Datei
 
@marabu

Habs mir gerade auch angesehen mit schrecken, wie importiere ich das denn in c# da ich nur den normalen importer kenne.

Hast du da ne Ahnung?

marabu 6. Sep 2005 09:42

Re: Probleme beim import von WSDL Datei
 
Hi Sascha,

du hast doch geschrieben, dass du bereits D2005 testweise installiert hast. Ich habe erst wieder heute abend Zugriff auf D2005, vermute aber, dass sowohl der Experte als auch das Kommandozeilen-Werkzeug angepasst wurden. Anstatt dir die Augen nach dem Experten auszugucken - suche doch mal nach WSDLimp.EXE im BIN-Verzeichnis (oder wie immer das da heißt) von D2005. Mit dem richtigen Parameter (-C für C++, -P für Object Pascal) wirst du wohl die C# Dateien erzeugen können. Hoffe ich für dich...

Grüße vom marabu

r_kerber 6. Sep 2005 10:19

Re: Probleme beim import von WSDL Datei
 
Zitat:

Zitat von marabu
habe eben gerade ein wenig in BDN QC geschmökert - der Fehler in D2005 wurde schon vor 8 Monaten gemeldet. Wenn ich mir den Report dort so ansehe, dann wird saschab nicht nur auf D2005 umstellen, sondern auch die Sprache (C#) wechseln müssen, damit er die WSDL Datei von Amazon verarbeiten kann - oder?

Das ist leider korrekt- Habe ich soeben ausprobiert. In einer Delphi WinForms-Anwendung wird die WSDL zwar importiert (was nicht verwundert). Der erzeugte Code läßt sich aber nicht übersetzen. Tonnenweise Fehlermeldungen. :cry: In einem C#-Sharp Projekt war aber auch das kein Problem mehr. Das ist wohl ein grundsätzliches Delphi- (und IMHO auch C++)-Problem beim Mappen eines benannten Arrays auf ein Klasse:
Zitat:

The problem is in the logic that maps a named array [in this case 'items'] to a class. That logic must be enabled for the top level type but not for the nested ones.
...
However, the code generated will not work in cases where we need to serialized an array with a specified name [since Pascal and C++ don't provide for a way to associate a type name with an array [syntactically they do but that information is not kept in the compiler's typeinfo about the type] the array element name will be serialized with the wrong name].

Robert_G 6. Sep 2005 10:28

Re: Probleme beim import von WSDL Datei
 
Tja, man kann es auch mit .Net Board mitteln versuchen, was ich generell immer eine Borlandbastelei vorziehen würde.
Kiekst du hier. ;)
Wenn es mit dem CodeDom von D.Net zickt, nimmm einen der funktioniert. Wie der von C# oder Chrome. Edit: Die kompilierte Lib kannst du ja dann in D.Net benutzen...
Der Wisdel-Importer von D7 hat ja schon damals auch nicht alles kapiert und dank Delphis phänomenal unsinniger single pass Einschränkung geht sicher auch in .Net ganz gerne was daneben...

saschab 6. Sep 2005 16:06

Re: Probleme beim import von WSDL Datei
 
So nü versteh ich fast gar nix mehr.

Ich kann doch wenn ich das richtig verstanden habe wie folgt vorgehen:

Zitat:

1) wsdl von .net ---> wsdl /language:CS AWSECommerceService.wsdl
bekomme dann eine AWSECommerceService.cs raus klappt auch ohne fehlermeldungen
2) mit csc --> csc /target:library AWSECommerce.cs
bekomme ich eine dll raus diese kann ich dann doch in delphi 32 benutzen oder?

Könnte das denn generell funktionieren?

Robert_G 6. Sep 2005 20:30

Re: Probleme beim import von WSDL Datei
 
Sorry Sasha,
Mein Beitrag richtete sich an Rainers Probleme mit D.Net. Überlese es einfach. ;)
Ich wollte mir zwar gerade 'nen Film ankieken, aber ich schaue mal was mein D7 aus dem Wisdel macht und vergleiche es mit dem was .Nets wsdl.exe + Chrome.exe daraus machen. ;)

btw: Bitte keine PNs mehr zu irgendwelchen Threads. Ich habe jetzt nur geantwortet, weil ich dich mit meinem OT wohl etwas durcheinandergebracht habe.

Edit2: Ich habe mein D7 hier ohne WebSnap & IntrWeb installiert, somit gibt's auch keinen wsdl Importer :wall:
Kannst du dir generierte Datei hier anhängen?

saschab 6. Sep 2005 20:44

Re: Probleme beim import von WSDL Datei
 
Hi,

hatte die pn nur geschrieben da ich gesehen hatte das Du online bist, ich habe die Datei mit dem wsdl importer von .Net SDK gemacht siehe meinen Beitrag, da ich immoment auf der Arbeit bin kann ich die erst morgen anhängen. Oder Du müsstest die eben selber erstellen (steht in meinen Post oben wie)

Der wsdl Importer von D7 und D2005 w32 und .net macht es sowieso nicht (Access Violation)

Danke schon mal wg der Mühe

Robert_G 6. Sep 2005 20:55

Re: Probleme beim import von WSDL Datei
 
Der generierte Chrome Code ist über 16.000 Zeilen lang! :shock: (C# trotz fehlender interface section 13.000 :shock: :shock: )
Ich glaube das ist dann doch ein wenig viel... ;)
Bleibt dir wohl nix anderes übrig als Zeilenweise durcj den Code zu laufen und alles was zickt mit dem wisdel zu vergleichen (Dort steht ja alles drin ;) ).
Der WSDL Importer von D7 taugt IMHO nicht wiklich viel...

saschab 6. Sep 2005 22:36

Re: Probleme beim import von WSDL Datei
 
Hi,

danke erst mal,

aber kann ich nicht die compellierte c# Datei die ich ja mit csc zu ner dll gemacht habe in Delphi benutzen?

Wenn ja wer weis wie?

Wenn ich die in Delphi 2005 zum project hinzufüge zeigt er mir alle klassen anscheinend an, nur gibt es eine möglichkeit alle Exportierten funktionen der Dll in mein Projekt automatisch hinzuzufügen?

Weil ne dll kann man doch universell benutzen oder?

Robert_G 7. Sep 2005 15:24

Re: Probleme beim import von WSDL Datei
 
Nene du. .Net DLLs sind nunmal .Net Assemblies und haben mit nativen Delphi32 Code nicht viel zu tun.
Du müsstest dir einen COM Wrapper drumrum bauen um sie dann in D32 benutzen zu können.
Das wäre wohl mit Kanonen auf Spatzen geschossen.

r_kerber 7. Sep 2005 15:46

Re: Probleme beim import von WSDL Datei
 
Moin Robert,

Zitat:

Zitat von Robert_G
Der Wisdel-Importer von D7 hat ja schon damals auch nicht alles kapiert und dank Delphis phänomenal unsinniger single pass Einschränkung geht sicher auch in .Net ganz gerne was daneben...

Das Problem liegt nicht nur nur an dem rudimentären WSDL-Importer von D7 sondern auch an bestimmten Spracheinschränkungen der Delphi-Language. Für Dich poste ich hier mal die kompletten Antworten, die ich von Borland erhalten habe:
Zitat:

Hello Rainer,

I'm currently on loan to the Delphi team to help out with some COM issues
and someone brought this item to my attention as I worked on WebServices
until the D7 timeframe. Indeed there's a bug in the importer. We are unable
to distinguish the inline complex type 'items' in 'CartAddRequest':

<xs:complexType name="CartAddRequest">
<xs:sequence>
<xs:element name="CartId" type="xs:string" minOccurs="0" />
<xs:element name="HMAC" type="xs:string" minOccurs="0" />
<xs:element name="MergeCart" type="xs:string" minOccurs="0" />
<xs:element name="Items" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ASIN" type="xs:string" minOccurs="0" />
<xs:element name="OfferListingId" type="xs:string" minOccurs="0" />
<xs:element name="Quantity" type="xs:positiveInteger" minOccurs="0"
/>
<xs:element name="AssociateTag" type="xs:string" minOccurs="0" />
<xs:element name="ListItemId" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ResponseGroup" type="xs:string" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>


from the top-level 'items' declared later:

<xs:element name="Items">
<xs:complexType>
<xs:sequence>
<xs:element name="TotalResults" type="xs:nonNegativeInteger"
minOccurs="0" />
<xs:element name="TotalPages" type="xs:nonNegativeInteger" minOccurs="0"
/>
<xs:element ref="tns:Item" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>

The 'CartCreateRequest' type - like 'CartAddRequest' - also has an inline
'items'.

The problem is in the logic that maps a named array [in this case 'items']
to a class. That logic must be enabled for the top level type but not for
the nested ones. Unfortunately, we don't distinguish between the two and
enable it for the nested one as well. So you should be able to avoid the AV
by turning off that mapping [i.e. by using the -Ok- switch]:

wsdlimp -Ok-
http://webservices.amazon.com/AWSECo...ceService.wsdl

However, the code generated will not work in cases where we need to
serialized an array with a specified name [since Pascal and C++ don't
provide for a way to associate a type name with an array [syntactically they
do but that information is not kept in the compiler's typeinfo about the
type] the array element name will be serialized with the wrong name].

Now, it is possible that the code generated might work for you if you are
not using some operations that involve named array types.

I've put in a fix to eliminate the AV; however, a proper fix would involve
adding logic to distinguish between nested and top level types and not
confusing them. If time allows, I hope to check in a fix for this issue too
next week.

Regards,

Bruneau.

und
Zitat:

Good morning!

Yes, please feel free to post the answer. I still want to stress that while
using -Ok- will avert the AV, the code generated will not be OK for
serializing the type 'Items' [and other named array types]. Also, if it's
helpful I'll be more than happy to post the correctly imported unit once I
put in a fix to the importer.

Regards,

Bruneau.

saschab 7. Sep 2005 20:19

Re: Probleme beim import von WSDL Datei
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

das hört sich ja mal nicht schlecht an.

Habe die wsdl mit

Zitat:

wsdlimp -Ok- AWSECommerceService.wsdl
übersetzt und er hat es gemacht weis noch nicht ob er sie auch kompelliert.

Hänge die erzeugte Datei mal hie an.

saschab 8. Sep 2005 14:59

Re: Probleme beim import von WSDL Datei
 
Hallo zusammen,

habe heute mal mit der erzeugten Pas rungespielt:

in der pas Steht folgendes:

Zitat:

// ************************************************** ********************** //
// The following types, referred to in the WSDL document are not being represented
// in this file. They are either aliases[@] of other types represented or were referred
// to but never[!] declared in the document. The types from the latter category
// typically map to predefined/known XML or Borland types; however, they could also
// indicate incorrect WSDL documents that failed to declare or import a schema type.
// ************************************************** ********************** //
// !:string - "http://www.w3.org/2001/XMLSchema"
// !:positiveInteger - "http://www.w3.org/2001/XMLSchema"
// !:HelpType - "http://www.w3.org/2001/XMLSchema"
// !:AudienceRating - "http://www.w3.org/2001/XMLSchema"
// !:Condition - "http://www.w3.org/2001/XMLSchema"
// !:DeliveryMethod - "http://www.w3.org/2001/XMLSchema"
// !:nonNegativeInteger - "http://www.w3.org/2001/XMLSchema"
// !:IdType - "http://www.w3.org/2001/XMLSchema"
// !:ListType - "http://www.w3.org/2001/XMLSchema"
// !:SimilarityType - "http://www.w3.org/2001/XMLSchema"
// !:Items - "http://www.w3.org/2001/XMLSchema"
// !:OfferStatus - "http://www.w3.org/2001/XMLSchema"
// !:ShipOption - "http://www.w3.org/2001/XMLSchema"
// !:Arguments - "http://www.w3.org/2001/XMLSchema"
// !:Errors - "http://www.w3.org/2001/XMLSchema"
// !:float - "http://www.w3.org/2001/XMLSchema"
// !:RequiredParameters - "http://www.w3.org/2001/XMLSchema"
// !:AvailableParameters - "http://www.w3.org/2001/XMLSchema"
// !:DefaultResponseGroups - "http://www.w3.org/2001/XMLSchema"
// !:AvailableResponseGroups - "http://www.w3.org/2001/XMLSchema"
// !:ValidOperations - "http://www.w3.org/2001/XMLSchema"
// !:Elements - "http://www.w3.org/2001/XMLSchema"
// !:SearchResultsMap - "http://www.w3.org/2001/XMLSchema"
// !:Item - "http://www.w3.org/2001/XMLSchema"
// !:SearchBinSets - "http://www.w3.org/2001/XMLSchema"
// !:integer - "http://www.w3.org/2001/XMLSchema"
// !:Children - "http://www.w3.org/2001/XMLSchema"
// !:Ancestors - "http://www.w3.org/2001/XMLSchema"
// !:TopSellers - "http://www.w3.org/2001/XMLSchema"
// !:NewReleases - "http://www.w3.org/2001/XMLSchema"
// !:List - "http://www.w3.org/2001/XMLSchema"
// !:Customer - "http://www.w3.org/2001/XMLSchema"
// !:Seller - "http://www.w3.org/2001/XMLSchema"
// !:Transaction - "http://www.w3.org/2001/XMLSchema"
// !:SellerListing - "http://www.w3.org/2001/XMLSchema"

Bedeutet ja das die Typen nicht angelegt werden Konnten

Lt Delphi sind dann folgende Typen nicht deklariert:

Zitat:

[Fehler] AWSECommerceService.pas(174): Undefinierter Bezeichner: 'HelpType'
[Fehler] AWSECommerceService.pas(213): Undefinierter Bezeichner: 'AudienceRating'
[Fehler] AWSECommerceService.pas(318): Undefinierter Bezeichner: 'IdType'
[Fehler] AWSECommerceService.pas(382): Undefinierter Bezeichner: 'ListType'
[Fehler] AWSECommerceService.pas(579): Undefinierter Bezeichner: 'SimilarityType'
[Fehler] AWSECommerceService.pas(917): Undefinierter Bezeichner: 'OfferStatus'
[Fehler] AWSECommerceService.pas(922): Undefinierter Bezeichner: 'ShipOption'
[Fehler] AWSECommerceService.pas(1120): Undefinierter Bezeichner: 'Arguments'
[Fehler] AWSECommerceService.pas(1142): Undefinierter Bezeichner: 'RequiredParameters'
[Fehler] AWSECommerceService.pas(1143): Undefinierter Bezeichner: 'AvailableParameters'
[Fehler] AWSECommerceService.pas(1144): Undefinierter Bezeichner: 'DefaultResponseGroups'
[Fehler] AWSECommerceService.pas(1145): Undefinierter Bezeichner: 'AvailableResponseGroups'
[Fehler] AWSECommerceService.pas(1164): Undefinierter Bezeichner: 'ValidOperations'
[Fehler] AWSECommerceService.pas(1165): Undefinierter Bezeichner: 'Elements'
[Fehler] AWSECommerceService.pas(1218): Undefinierter Bezeichner: 'SearchResultsMap'
[Fehler] AWSECommerceService.pas(1219): Undefinierter Bezeichner: 'Item'
[Fehler] AWSECommerceService.pas(1220): Undefinierter Bezeichner: 'SearchBinSets'
[Fehler] AWSECommerceService.pas(1306): Undefinierter Bezeichner: 'Children'
[Fehler] AWSECommerceService.pas(1307): Undefinierter Bezeichner: 'Ancestors'
[Fehler] AWSECommerceService.pas(1361): Undefinierter Bezeichner: 'List'
[Fehler] AWSECommerceService.pas(1413): Undefinierter Bezeichner: 'Customer'
[Fehler] AWSECommerceService.pas(1465): Undefinierter Bezeichner: 'Seller'
[Fehler] AWSECommerceService.pas(1689): Undefinierter Bezeichner: 'Transaction'
[Fehler] AWSECommerceService.pas(1725): Undefinierter Bezeichner: 'SellerListing'
[Fataler Fehler] Wsdltest.dpr(6): Verwendete Unit 'AWSECommerceService.pas' kann nicht compiliert werden
Finde aber auch in der WSDL keine zuweisungen dazu.

Kann damit jemand mehr anfangen?

r_kerber 9. Sep 2005 12:32

Re: Probleme beim import von WSDL Datei
 
Du hast Dir aber die Antwort von Bruneau durchgelesen? Da steht auch drin, daß die generierte pas-Datei nicht compiliert werden kann, da es die Sprachdefinition von Delphi nicht zuläßt?

saschab 9. Sep 2005 16:23

Re: Probleme beim import von WSDL Datei
 
Hi,

ja habe ich und hatte es leider etwas falsch interpretiert sorry. Aber wie sieht das denn jetzt aus wird man es hinbekommen das man die Amazon Api benutzen kann unter delphi w32 oder nicht?

r_kerber 9. Sep 2005 17:19

Re: Probleme beim import von WSDL Datei
 
Zitat:

Zitat von saschab
Aber wie sieht das denn jetzt aus wird man es hinbekommen das man die Amazon Api benutzen kann unter delphi w32 oder nicht?

Du wirfst wieder zwei Dinge zusammen:
  • Der DW32-WSDL-Importer liefert eine AV. das bedeutet, Du mußt tricksen, damit Du eine PASCAL-Unit bekommst.
  • Egal ob Du den Win32-SOAP-Importer oder den von .Net. Der erzeugte PASCAL-Code kann weder von D-Win32 noch von D.Net übersetzt werden. Ursache sind offensichtlich Einschränkungen in der Delphi-Language
Es sieht so aus, als würde daran gearbeitet. Ich denke für .Net werden die Borländer das Ganze hinbiegen, notfalls durch Spracherweiterungen. Ob aber dann auch der "alte" Importer angepaßt wird, vermag ich nicht zu sagen.

r_kerber 13. Sep 2005 15:17

Re: Probleme beim import von WSDL Datei
 
Zitat:

Zitat von r_kerber
Es sieht so aus, als würde daran gearbeitet. Ich denke für .Net werden die Borländer das Ganze hinbiegen, notfalls durch Spracherweiterungen. Ob aber dann auch der "alte" Importer angepaßt wird, vermag ich nicht zu sagen.

So, ich habe bei Borland nachgefragt und folgende Antwort erhalten:
Zitat:

Hello,

It's my understanding that there are few runtime changes to Win32 SOAP for this release. So, I expect the code generated by the importer to be compatible with the run of D7. IOW, we could simply post a new WSDLIMP.EXE for users of D7. (If there were runtime changes, it should still be possible to tweak the imported unit to accommodate).

As far as time frame is concerned, I don't know much. ... Probably the best thing to do in the case of Amazon would be to post the imported unit - once we've resolved the remaining issue I mentioned in a previous post.

Let me know if you need more information.

Regards,

Bruneau.
Wenn der W32 SOAP Importer gefixt ist, dann wird es wohl auch einen Download für D7-User geben.


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