<?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[Delphi nach CPP]]></title><description><![CDATA[<p>Hallo,<br />
ich habe da ein kleines Problem mit einer Übersetzung von Delphi nach CPP, vielleicht kann mir jemand sagen was ich Falsch mache.</p>
<p>Hier der Delphi Code:</p>
<pre><code class="language-cpp">unit uXmlParser2; { mk, 12.4.04 }

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, StdCtrls, msxmldom, XMLDoc, ComCtrls, oxmldom;

type
  TForm1 = class(TForm)
    XDoc: TXMLDocument;
    bGibaus: TButton;
    OpenDialog1: TOpenDialog;
    tvBaum: TTreeView;
    mAusgabe: TMemo;
    procedure bGibausClick(Sender: TObject);
  private
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bGibausClick(Sender: TObject);
var
  node   : IXMLNode;
  nodes  : IXMLNodeList;
  knoten : TTreeNode;
  s      : string;
  i      : integer;

  procedure erweitere(node : IXMLNode;knoten : TTreeNode);
  var
    nodes      : IXMLNodeList;
    kindknoten : TTreeNode;
    i          : integer;
  begin
    if node.HasChildNodes then
    begin
      nodes := node.ChildNodes;
      for i := 0 to nodes.Count - 1 do
      begin
        case nodes[i].NodeType of
          ntElement   : kindknoten :=
                          tvBaum.Items.AddChild(knoten,'&lt;'+nodes[i].NodeName+'&gt;');
          ntText      : kindknoten :=
                          tvBaum.Items.AddChild(knoten,nodes[i].text);
        end; // of case
        erweitere(nodes[i],kindknoten);
      end;
    end;
  end;

begin
  if OpenDialog1.Execute then
  try
    tvBaum.Items.Clear;
    XDoc.LoadFromFile(OpenDialog1.FileName);
    node := XDoc.DocumentElement;
    nodes := node.AttributeNodes;
    s := '';
    for i := 0 to nodes.Count - 1 do
      s := s + nodes[i].NodeName + ' = ' +nodes[i].NodeValue + '  ';
    knoten := tvBaum.Items.Add(nil,'&lt;'+node.NodeName+'&gt;  '+s);
    erweitere(node,knoten);
  except
    on E:Exception do
      mAusgabe.Lines.Add(E.Message);
  end;
end;
</code></pre>
<p>Jetzt die Übersetzung:<br />
Unit1.h</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;
#include &lt;ComCtrls.hpp&gt;
#include &lt;Dialogs.hpp&gt;
#include &lt;msxmldom.hpp&gt;
#include &lt;XMLDoc.hpp&gt;
#include &lt;xmldom.hpp&gt;
#include &lt;XMLIntf.hpp&gt;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
        TTreeView *tvBaum;
        TButton *bGibaus;
        TXMLDocument *XDoc;
        TOpenDialog *OpenDialog1;
        void __fastcall bGibausClick(TObject *Sender);
private:	// Anwender-Deklarationen
public:		// Anwender-Deklarationen
void __fastcall erweitere(IXMLNode*node,TTreeNode*knoten);
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Unit1.cpp</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::bGibausClick(TObject *Sender)
{
IXMLNode * node;
IXMLNodeList * nodes;
TTreeNode * knoten;
AnsiString  s;
int i;

  if (OpenDialog1-&gt;Execute())
  {
    tvBaum-&gt;Items-&gt;Clear();
    XDoc-&gt;LoadFromFile(OpenDialog1-&gt;FileName);
    node = XDoc-&gt;DocumentElement;
    nodes = node-&gt;AttributeNodes;
    s = &quot;&quot;;
      for ( i= 0;i&lt;nodes-&gt;Count - 1;i++)
      {
       s = s + nodes[i]-&gt;NodeName + &quot; = &quot; +nodes[i]-&gt;NodeValue + &quot;  &quot;;// Fehler
       knoten = tvBaum-&gt;Items-&gt;Add(NULL,&quot;&lt;&quot;+node-&gt;NodeName+&quot;&gt;  &quot;+s);
       erweitere(node,knoten);
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::erweitere(IXMLNode*node,TTreeNode*knoten)
{
IXMLNodeList * nodes;
TTreeNode * kindknoten;
int i;
 if (node-&gt;HasChildNodes)
 {
  nodes = node-&gt;ChildNodes;
  for( i=0;i&lt; nodes-&gt;Count - 1;i++)
  {
        switch (nodes[i]-&gt;NodeType)//Fehler
        {
            case ntElement:
            {
            kindknoten = tvBaum-&gt;Items-&gt;AddChild(knoten,'&lt;'+nodes[i]-&gt;NodeName+'&gt;');//Fehler
            }
            case  ntText:
            {
            kindknoten = tvBaum-&gt;Items-&gt;AddChild(knoten,nodes[i]-&gt;Text);//Fehler
            }
        }
  }
  erweitere(nodes[i],kindknoten);//Fehler
 }
}
//---------------------------------------------------------------------------
</code></pre>
<p>Die Fehlermeldung lautet:<br />
[C++ Fehler] Unit1.cpp(60): E2288 Zeiger auf Struktur auf linker Seite von -&gt; oder von -&gt;* erforderlich*<br />
[C++ Fehler] Unit1.cpp(64): E2034 Konvertierung von 'IXMLNodeList' nach 'IXMLNode *' nicht möglich<br />
[C++ Fehler] Unit1.cpp(64): E2342 Keine Übereinstimmung des Typs beim Parameter 'node' ('IXMLNode *' erwartet, 'IXMLNodeList' erhalten)</p>
<p>Weiss jemand was da Falsch mache?<br />
In Delphi funktioniert der Code?????</p>
<p>Gruss Lisa</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152805/delphi-nach-cpp</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 04:22:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152805.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Jul 2006 07:40:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 07:40:11 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe da ein kleines Problem mit einer Übersetzung von Delphi nach CPP, vielleicht kann mir jemand sagen was ich Falsch mache.</p>
<p>Hier der Delphi Code:</p>
<pre><code class="language-cpp">unit uXmlParser2; { mk, 12.4.04 }

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, StdCtrls, msxmldom, XMLDoc, ComCtrls, oxmldom;

type
  TForm1 = class(TForm)
    XDoc: TXMLDocument;
    bGibaus: TButton;
    OpenDialog1: TOpenDialog;
    tvBaum: TTreeView;
    mAusgabe: TMemo;
    procedure bGibausClick(Sender: TObject);
  private
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bGibausClick(Sender: TObject);
var
  node   : IXMLNode;
  nodes  : IXMLNodeList;
  knoten : TTreeNode;
  s      : string;
  i      : integer;

  procedure erweitere(node : IXMLNode;knoten : TTreeNode);
  var
    nodes      : IXMLNodeList;
    kindknoten : TTreeNode;
    i          : integer;
  begin
    if node.HasChildNodes then
    begin
      nodes := node.ChildNodes;
      for i := 0 to nodes.Count - 1 do
      begin
        case nodes[i].NodeType of
          ntElement   : kindknoten :=
                          tvBaum.Items.AddChild(knoten,'&lt;'+nodes[i].NodeName+'&gt;');
          ntText      : kindknoten :=
                          tvBaum.Items.AddChild(knoten,nodes[i].text);
        end; // of case
        erweitere(nodes[i],kindknoten);
      end;
    end;
  end;

begin
  if OpenDialog1.Execute then
  try
    tvBaum.Items.Clear;
    XDoc.LoadFromFile(OpenDialog1.FileName);
    node := XDoc.DocumentElement;
    nodes := node.AttributeNodes;
    s := '';
    for i := 0 to nodes.Count - 1 do
      s := s + nodes[i].NodeName + ' = ' +nodes[i].NodeValue + '  ';
    knoten := tvBaum.Items.Add(nil,'&lt;'+node.NodeName+'&gt;  '+s);
    erweitere(node,knoten);
  except
    on E:Exception do
      mAusgabe.Lines.Add(E.Message);
  end;
end;
</code></pre>
<p>Jetzt die Übersetzung:<br />
Unit1.h</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;
#include &lt;ComCtrls.hpp&gt;
#include &lt;Dialogs.hpp&gt;
#include &lt;msxmldom.hpp&gt;
#include &lt;XMLDoc.hpp&gt;
#include &lt;xmldom.hpp&gt;
#include &lt;XMLIntf.hpp&gt;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
        TTreeView *tvBaum;
        TButton *bGibaus;
        TXMLDocument *XDoc;
        TOpenDialog *OpenDialog1;
        void __fastcall bGibausClick(TObject *Sender);
private:	// Anwender-Deklarationen
public:		// Anwender-Deklarationen
void __fastcall erweitere(IXMLNode*node,TTreeNode*knoten);
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Unit1.cpp</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::bGibausClick(TObject *Sender)
{
IXMLNode * node;
IXMLNodeList * nodes;
TTreeNode * knoten;
AnsiString  s;
int i;

  if (OpenDialog1-&gt;Execute())
  {
    tvBaum-&gt;Items-&gt;Clear();
    XDoc-&gt;LoadFromFile(OpenDialog1-&gt;FileName);
    node = XDoc-&gt;DocumentElement;
    nodes = node-&gt;AttributeNodes;
    s = &quot;&quot;;
      for ( i= 0;i&lt;nodes-&gt;Count - 1;i++)
      {
       s = s + nodes[i]-&gt;NodeName + &quot; = &quot; +nodes[i]-&gt;NodeValue + &quot;  &quot;;// Fehler
       knoten = tvBaum-&gt;Items-&gt;Add(NULL,&quot;&lt;&quot;+node-&gt;NodeName+&quot;&gt;  &quot;+s);
       erweitere(node,knoten);
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::erweitere(IXMLNode*node,TTreeNode*knoten)
{
IXMLNodeList * nodes;
TTreeNode * kindknoten;
int i;
 if (node-&gt;HasChildNodes)
 {
  nodes = node-&gt;ChildNodes;
  for( i=0;i&lt; nodes-&gt;Count - 1;i++)
  {
        switch (nodes[i]-&gt;NodeType)//Fehler
        {
            case ntElement:
            {
            kindknoten = tvBaum-&gt;Items-&gt;AddChild(knoten,'&lt;'+nodes[i]-&gt;NodeName+'&gt;');//Fehler
            }
            case  ntText:
            {
            kindknoten = tvBaum-&gt;Items-&gt;AddChild(knoten,nodes[i]-&gt;Text);//Fehler
            }
        }
  }
  erweitere(nodes[i],kindknoten);//Fehler
 }
}
//---------------------------------------------------------------------------
</code></pre>
<p>Die Fehlermeldung lautet:<br />
[C++ Fehler] Unit1.cpp(60): E2288 Zeiger auf Struktur auf linker Seite von -&gt; oder von -&gt;* erforderlich*<br />
[C++ Fehler] Unit1.cpp(64): E2034 Konvertierung von 'IXMLNodeList' nach 'IXMLNode *' nicht möglich<br />
[C++ Fehler] Unit1.cpp(64): E2342 Keine Übereinstimmung des Typs beim Parameter 'node' ('IXMLNode *' erwartet, 'IXMLNodeList' erhalten)</p>
<p>Weiss jemand was da Falsch mache?<br />
In Delphi funktioniert der Code?????</p>
<p>Gruss Lisa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094820</guid><dc:creator><![CDATA[lisa001]]></dc:creator><pubDate>Mon, 10 Jul 2006 07:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 07:46:33 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich vermute es muß <em>nodes-&gt;Items[i]-&gt;NodeName</em> o.ä. heißen.<br />
In solchen Fällen hilft die Doku und die Auto-Vervollständigen weiter.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094826</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 10 Jul 2006 07:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 08:13:51 GMT]]></title><description><![CDATA[<p>Die Idee hatte ich auch schon, aber die Eigenschaft Items ist nicht vorhanden</p>
<p>Gruss Lisa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094838</guid><dc:creator><![CDATA[lisa001]]></dc:creator><pubDate>Mon, 10 Jul 2006 08:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 08:21:24 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du kannst auch als Namen für die Eigenschaften auch noch Item und Node probieren.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094844</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 10 Jul 2006 08:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 08:53:56 GMT]]></title><description><![CDATA[<p>Danke das wars!!<br />
Aber jetzt bekomme ich diese Fehlermeldung:</p>
<p>---------------------------<br />
Benachrichtigung über Debugger-Exception<br />
---------------------------<br />
Im Projekt Project1.exe ist eine Exception der Klasse EVariantTypeCastError aufgetreten. Meldung: 'Variante des Typs (String) konnte nicht in Typ (Double) konvertiert werden'. Prozeß wurde angehalten.</p>
<p>Was mache ich falsch?? Ich bin am verzweifeln!!!<br />
Gruss Lisa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094878</guid><dc:creator><![CDATA[lisa001]]></dc:creator><pubDate>Mon, 10 Jul 2006 08:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 09:08:11 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>da ich in deinem Quellcode-Auszug keinen Bezug zu irgendwelchen float-Operationen sehe, muß der Auslöser wo anders sein.</p>
<p>Die Fehlermeldung bedeutet, das du versuchst eine Variable vom Typ Variant mit String-Inhalt in ein double umzuwandeln.<br />
Zuerst solltst du dich in der BCB-Hilfe über den Typ Variant schlau machen. Dieser Datentyp kann Werte verschiedenster andere festgelegten Typen aufnehmen, aber immer nur genau einen. Wenn also gerade ein String gespeichert ist, kannst du kein double auslesen.<br />
Je nach dem was du eigentlich vorhast must du also die Belegung des Variants überprüfen oder mit StrToFloat o.ä. arbeiten.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1094889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1094889</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 10 Jul 2006 09:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to Delphi nach CPP on Mon, 10 Jul 2006 12:13:36 GMT]]></title><description><![CDATA[<p>Ich finde diesen blöden fehler nicht.</p>
<p>Der Auslöser ist:</p>
<pre><code class="language-cpp">erweitere(node,knoten);
</code></pre>
<p>gruss lisa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095063</guid><dc:creator><![CDATA[lisa001]]></dc:creator><pubDate>Mon, 10 Jul 2006 12:13:36 GMT</pubDate></item></channel></rss>