Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 Uhr.
Seite 2 von 3     12 3      

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