<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Soap und Mehrdimensional Arrays]]></title><description><![CDATA[<p>Halli,</p>
<p>ich schreibe unter dem C++Builder 6 Update 4 Gerade einen Soap Client und wollte die integrierten Bibliotheken verwenden.</p>
<p>Die Routine soll nur SQL Statements weiter reichen und das Ergebnis des Statements entgegen nehmen, auf der Server Seite ist ein PHP Skript aktiv:</p>
<p>Die entscheidene Deklaration in der WSDL Datei lautet:</p>
<pre><code>&lt;xsd:complexType name=&quot;SQLRow&quot;&gt;
    &lt;xsd:complexContent&gt;
      &lt;xsd:restriction base=&quot;soapenc:Array&quot;&gt;
        &lt;xsd:attribute ref=&quot;soapenc:arrayType&quot;
wsdl:arrayType=&quot;xsd:string[]&quot;/&gt;
      &lt;/xsd:restriction&gt;
    &lt;/xsd:complexContent&gt;
  &lt;/xsd:complexType&gt;

  &lt;xsd:complexType name=&quot;SQLTable&quot;&gt;
    &lt;xsd:complexContent&gt;
      &lt;xsd:restriction base=&quot;soapenc:Array&quot;&gt;
       &lt;xsd:attribute ref=&quot;soapenc:arrayType&quot;
wsdl:arrayType=&quot;xsd:string[,]&quot;/&gt;
      &lt;/xsd:restriction&gt;
    &lt;/xsd:complexContent&gt;
  &lt;/xsd:complexType&gt;

  &lt;xsd:complexType name=&quot;SQLSelectResult&quot;&gt;
    &lt;xsd:all&gt;
      &lt;xsd:element name=&quot;SelectOK&quot; type=&quot;xsd:int&quot;/&gt;
      &lt;xsd:element name=&quot;Head&quot;  type=&quot;typens:SQLRow&quot;/&gt;
      &lt;xsd:element name=&quot;Table&quot;  type=&quot;typens:SQLTable&quot;/&gt;
    &lt;/xsd:all&gt;
  &lt;/xsd:complexType&gt;
&lt;message name=&quot;dogetSQLCreate&quot;&gt;
  &lt;part name=&quot;SessionID&quot; type=&quot;xsd:int&quot;/&gt;
  &lt;part name=&quot;Tabelle&quot;  type=&quot;xsd:string&quot;/&gt;
&lt;/message&gt;

&lt;message name=&quot;getSQLCreateResponse&quot;&gt;
  &lt;part name=&quot;return&quot;  type=&quot;xsd:string&quot;/&gt;
&lt;/message&gt;

&lt;operation name=&quot;getSQLSelect&quot;&gt;
  &lt;input message=&quot;typens:dogetSQLSelect&quot; /&gt;
  &lt;output message=&quot;typens:getSQLSelectResponse&quot; /&gt;
 &lt;/operation&gt;
</code></pre>
<p>Der WSDL Assistent übernimmt dies auch ohne anstalten und generiert mir daraus die folgenden Klassen:</p>
<pre><code>typedef DynamicArray&lt;AnsiString&gt;  SQLRow;         /* &quot;urn:BiosDB&quot; */
typedef DynamicArray&lt; DynamicArray&lt;AnsiString&gt; &gt; SQLTable;       /*
&quot;urn:BiosDB&quot; */

// ************************************************************************
//
// Namespace : urn:BiosDB
// ************************************************************************
//
class SQLSelectResult : public TRemotable {
private:
  int             FSelectOK;
  SQLRow          FHead;
  SQLTable        FTable;
public:
__published:
  __property int          SelectOK = { read=FSelectOK, write=FSelectOK };
  __property SQLRow           Head = { read=FHead, write=FHead };
  __property SQLTable        Table = { read=FTable, write=FTable };
};

__interface INTERFACE_UUID(&quot;{4DE1BF76-AD0A-49C6-2428-0B317090487F}&quot;)
ExamplePort : public IInvokable
{
public:
  virtual SQLSelectResult* getSQLSelect(const int SessionID, const
AnsiString SQLStatement) = 0;
};

typedef DelphiInterface&lt;ExamplePort&gt; _di_ExamplePort;
</code></pre>
<p>Rufe ich nun die Methode getSQLSelect auf über:</p>
<pre><code>_di_ExamplePort ExampleDB;
SQLSelectResult *Result = new SQLSelectResult();
Result = ExampleDB-&gt;getSQLSelect(SessionID,SQLStr);
</code></pre>
<p>Bekomme ich innerhalb der systobj.h eine Zugriffsverletzung. Ich vermute mal, dass die Umsetzung auf den Delphityp DynamicArray nicht sauber ist. Hat jemand eine Idee woran das liegt. Unter Delphi funktioniert das übrigens alles problemlos. Kann man vielleicht der Soap Klasse das automatische Verwenden der Delphi Klassen untersagen und dafür vielleicht gleich die STL nehmen?</p>
<p>Ansonsten müsste ich die Axis Bibliotheken nehmen, aber man versucht ja immer alles solange wie möglich in der IDE zu lassen, Faulheit siegt.</p>
<p>Danke für die Hilfe</p>
<p>OLi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/90711/soap-und-mehrdimensional-arrays</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 23:54:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/90711.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Nov 2004 13:16:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Soap und Mehrdimensional Arrays on Mon, 01 Nov 2004 13:16:31 GMT]]></title><description><![CDATA[<p>Halli,</p>
<p>ich schreibe unter dem C++Builder 6 Update 4 Gerade einen Soap Client und wollte die integrierten Bibliotheken verwenden.</p>
<p>Die Routine soll nur SQL Statements weiter reichen und das Ergebnis des Statements entgegen nehmen, auf der Server Seite ist ein PHP Skript aktiv:</p>
<p>Die entscheidene Deklaration in der WSDL Datei lautet:</p>
<pre><code>&lt;xsd:complexType name=&quot;SQLRow&quot;&gt;
    &lt;xsd:complexContent&gt;
      &lt;xsd:restriction base=&quot;soapenc:Array&quot;&gt;
        &lt;xsd:attribute ref=&quot;soapenc:arrayType&quot;
wsdl:arrayType=&quot;xsd:string[]&quot;/&gt;
      &lt;/xsd:restriction&gt;
    &lt;/xsd:complexContent&gt;
  &lt;/xsd:complexType&gt;

  &lt;xsd:complexType name=&quot;SQLTable&quot;&gt;
    &lt;xsd:complexContent&gt;
      &lt;xsd:restriction base=&quot;soapenc:Array&quot;&gt;
       &lt;xsd:attribute ref=&quot;soapenc:arrayType&quot;
wsdl:arrayType=&quot;xsd:string[,]&quot;/&gt;
      &lt;/xsd:restriction&gt;
    &lt;/xsd:complexContent&gt;
  &lt;/xsd:complexType&gt;

  &lt;xsd:complexType name=&quot;SQLSelectResult&quot;&gt;
    &lt;xsd:all&gt;
      &lt;xsd:element name=&quot;SelectOK&quot; type=&quot;xsd:int&quot;/&gt;
      &lt;xsd:element name=&quot;Head&quot;  type=&quot;typens:SQLRow&quot;/&gt;
      &lt;xsd:element name=&quot;Table&quot;  type=&quot;typens:SQLTable&quot;/&gt;
    &lt;/xsd:all&gt;
  &lt;/xsd:complexType&gt;
&lt;message name=&quot;dogetSQLCreate&quot;&gt;
  &lt;part name=&quot;SessionID&quot; type=&quot;xsd:int&quot;/&gt;
  &lt;part name=&quot;Tabelle&quot;  type=&quot;xsd:string&quot;/&gt;
&lt;/message&gt;

&lt;message name=&quot;getSQLCreateResponse&quot;&gt;
  &lt;part name=&quot;return&quot;  type=&quot;xsd:string&quot;/&gt;
&lt;/message&gt;

&lt;operation name=&quot;getSQLSelect&quot;&gt;
  &lt;input message=&quot;typens:dogetSQLSelect&quot; /&gt;
  &lt;output message=&quot;typens:getSQLSelectResponse&quot; /&gt;
 &lt;/operation&gt;
</code></pre>
<p>Der WSDL Assistent übernimmt dies auch ohne anstalten und generiert mir daraus die folgenden Klassen:</p>
<pre><code>typedef DynamicArray&lt;AnsiString&gt;  SQLRow;         /* &quot;urn:BiosDB&quot; */
typedef DynamicArray&lt; DynamicArray&lt;AnsiString&gt; &gt; SQLTable;       /*
&quot;urn:BiosDB&quot; */

// ************************************************************************
//
// Namespace : urn:BiosDB
// ************************************************************************
//
class SQLSelectResult : public TRemotable {
private:
  int             FSelectOK;
  SQLRow          FHead;
  SQLTable        FTable;
public:
__published:
  __property int          SelectOK = { read=FSelectOK, write=FSelectOK };
  __property SQLRow           Head = { read=FHead, write=FHead };
  __property SQLTable        Table = { read=FTable, write=FTable };
};

__interface INTERFACE_UUID(&quot;{4DE1BF76-AD0A-49C6-2428-0B317090487F}&quot;)
ExamplePort : public IInvokable
{
public:
  virtual SQLSelectResult* getSQLSelect(const int SessionID, const
AnsiString SQLStatement) = 0;
};

typedef DelphiInterface&lt;ExamplePort&gt; _di_ExamplePort;
</code></pre>
<p>Rufe ich nun die Methode getSQLSelect auf über:</p>
<pre><code>_di_ExamplePort ExampleDB;
SQLSelectResult *Result = new SQLSelectResult();
Result = ExampleDB-&gt;getSQLSelect(SessionID,SQLStr);
</code></pre>
<p>Bekomme ich innerhalb der systobj.h eine Zugriffsverletzung. Ich vermute mal, dass die Umsetzung auf den Delphityp DynamicArray nicht sauber ist. Hat jemand eine Idee woran das liegt. Unter Delphi funktioniert das übrigens alles problemlos. Kann man vielleicht der Soap Klasse das automatische Verwenden der Delphi Klassen untersagen und dafür vielleicht gleich die STL nehmen?</p>
<p>Ansonsten müsste ich die Axis Bibliotheken nehmen, aber man versucht ja immer alles solange wie möglich in der IDE zu lassen, Faulheit siegt.</p>
<p>Danke für die Hilfe</p>
<p>OLi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/642191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/642191</guid><dc:creator><![CDATA[olipenz]]></dc:creator><pubDate>Mon, 01 Nov 2004 13:16:31 GMT</pubDate></item><item><title><![CDATA[Reply to Soap und Mehrdimensional Arrays on Tue, 02 Nov 2004 10:29:46 GMT]]></title><description><![CDATA[<p>hm, ich hab auch schon hier und da versucht, Die Anwendungen mit dem BCB mit WebService und CORBA vernünftig ans laufen zu bringen. Leider gibt es da noch einige Bugs mehr, als das was du da beschreibst.</p>
<p>Borland hat da ein Kummerkasten für Developoer. Das nennt sich BugCentralProject. Da gewinnt der Begriff &quot;Bug-tracking&quot; aber leider auch gleich eine neue Bedeutung. Auch wenn TeamB und Co recht augagiert in den Newsgroups und Foren aktiv sind, Bugs werden kaum noch behoben. Leider. Wenn man sich die doch wirklich geringe Anfragenanzahl in den Newsgroups und Foren zum Thema BCB+Soap/Corba sieht, kann man ja auch verstehen, das die Borlander dieses Probleme natürlich schön weit nach hintern schieben. Da die VCL nicht mehr weiterentwickelt wird, würde ich an deiner Stelle nicht damit rechnen, dass je ein Bug zum Thema Soap/CORBA behoben wird.</p>
<p>Wenn du an unternehmenskritischen Anwendungen arbeitest, kann ich dir nur von der Verwendung der borlandspezifischen Umsetung der Soap- und CORBAkommunikation abraten.</p>
<blockquote>
<p>Ansonsten müsste ich die Axis Bibliotheken nehmen, aber man versucht ja immer alles solange wie möglich in der IDE zu lassen, Faulheit siegt.</p>
</blockquote>
<p>Pass auf, das du dir keine Eier ins Nest legst, die du nicht brüten kannst.<br />
Faulheit ist der schlimmste Feind des Menschen.</p>
<p>Der BCB ist ein gutes Tool. Es ist aber immer nur so gut, wie die Bibliotheken, die benutzt werden. Generell ist die Verwendung von SOAP und CORBA eine sehr gute Sache. Wähle aber deine Mittel aber gut aus.<br />
Axis ist da eine Möglichkeit. Ich bin zufällig auch mal auf <a href="http://www.systinet.com/resources/tutorials#cpp" rel="nofollow">http://www.systinet.com/resources/tutorials#cpp</a> gestossen. Ich hab es nicht ausprobiert (Zeitmangel), aber vielleicht ist das ja brauchbar, wenn man nicht mit Axis möchte.</p>
<p>Ansonsten bevorzuge ich, wenn es nicht unbedingt WebService sein muss, CORBA. Siehe hierzu auch:</p>
<p><a href="http://www.kompf.de/cplus/corbatut.html" rel="nofollow">http://www.kompf.de/cplus/corbatut.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/642715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/642715</guid><dc:creator><![CDATA[AndreasW]]></dc:creator><pubDate>Tue, 02 Nov 2004 10:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to Soap und Mehrdimensional Arrays on Tue, 02 Nov 2004 11:09:14 GMT]]></title><description><![CDATA[<p>Halli,</p>
<blockquote>
<p>hm, ich hab auch schon hier und da versucht, Die Anwendungen mit dem BCB mit WebService und CORBA vernünftig ans laufen zu bringen. Leider gibt es da noch einige Bugs mehr, als das was du da beschreibst.</p>
</blockquote>
<p>So was in der Richtung habe ich leider echt schon vermutet.</p>
<blockquote>
<p>Pass auf, das du dir keine Eier ins Nest legst, die du nicht brüten kannst.<br />
Faulheit ist der schlimmste Feind des Menschen.</p>
</blockquote>
<p>Der schlimmste würde ich nicht sagen, da hätte ich noch ein paar Favouriten davor: Neid, Selbstsucht etc. Aber Du hast natürlich Recht, Faulheit ist in der Tat der falsche Lösungsansatz.</p>
<blockquote>
<p>Der BCB ist ein gutes Tool. Es ist aber immer nur so gut, wie die Bibliotheken, die benutzt werden. Generell ist die Verwendung von SOAP und CORBA eine sehr gute Sache. Wähle aber deine Mittel aber gut aus.<br />
Axis ist da eine Möglichkeit.</p>
</blockquote>
<p>Ich denke ich habe mich dafür entschlossen Axis zu nehmen, Corba würde zu viel Änderungen serverseitig bedeuten. Da ich für das Tool schon die Xerces Bibliotheken verwende, macht es ja Sinn auch Axis zu nehmen. Vielleicht wird es ja das &quot;Apache Tool of the Year&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Danke für Deine Hilfe</p>
<p>OLi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/642742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/642742</guid><dc:creator><![CDATA[olipenz]]></dc:creator><pubDate>Tue, 02 Nov 2004 11:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to Soap und Mehrdimensional Arrays on Tue, 02 Nov 2004 11:17:44 GMT]]></title><description><![CDATA[<blockquote>
<p>Vielleicht wird es ja das &quot;Apache Tool of the Year&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>lol</p>
<p>sei bitte so nett und berichte hier später, wie deine Eindrücke und Erfahrungen mit Axis und Xerces allgemein und im Zusammenspiel mit dem BCB sind. Einigen Leuten wird deine Erfahrung damit sehr interessieren. Unter anderm mich auch. Ich musste zwar auf .NET wechseln, weil ich den Einsatz des BCBs, mit diesen Tücken bei mehrschichtigen Anwendungen, vor der Geschäftsleitung nicht mehr rechtfertigen konnte. Privat bleib ich aber C++ler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/642752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/642752</guid><dc:creator><![CDATA[AndreasW]]></dc:creator><pubDate>Tue, 02 Nov 2004 11:17:44 GMT</pubDate></item></channel></rss>