<?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[Variablenübergabe bei Tab-Control-Pages]]></title><description><![CDATA[<p>Hallo an Alle,</p>
<p>ich habe ein Problem, ich habe eine TabControl-Struktur geschrieben, die auch einwandfrei läuft. Das Gesamtprogramm soll nun pro Page eine Textdatei einlesen und die Werte auf der Page darstellen, das funktioniert auch. Diese Werte können verändert werden und zum Schluss wird eine Gesamttextdatei geschrieben, mit allen Werten, aus allen Pages. Zum besseren Handling der Werte habe ich eine neue Klasse erstellt, in die alle eingelesenen Daten in Arrays geschrieben werden. Sozusagen eine Datenklasse. Ich habe nun pro Page eine Variable mit der Datenklasse als ihre Bezugsklasse erstellt. Ich erhoffte mir damit auch untereinander Daten austauschen zu können, da ja alle Daten in der Datenklasse vorhanden sind und ich von jeder Page auf alle Arrays der Datenklasse zugreifen kann. Mein Problem ist, dass ich immer nur auf die Arrays zugreifen kann, die die aktuelle Page beschrieben hat. Also wenn Page Nr.1 Array1 beschrieben hat, so kann ich mit Page Nr.2 nicht von Array1 Daten abholen. Es gibt zwar keinen Fehler aus, aber es werden nur Leerstrings übergeben. Wo liegt mein Denkfehler?<br />
Ich programmiere übrigens in VC++ im Visual Studio 2003</p>
<p>Mit Dank für Hilfe und freundlichem Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145171/variablenübergabe-bei-tab-control-pages</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 05:34:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145171.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Apr 2006 16:42:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Tue, 25 Apr 2006 16:42:16 GMT]]></title><description><![CDATA[<p>Hallo an Alle,</p>
<p>ich habe ein Problem, ich habe eine TabControl-Struktur geschrieben, die auch einwandfrei läuft. Das Gesamtprogramm soll nun pro Page eine Textdatei einlesen und die Werte auf der Page darstellen, das funktioniert auch. Diese Werte können verändert werden und zum Schluss wird eine Gesamttextdatei geschrieben, mit allen Werten, aus allen Pages. Zum besseren Handling der Werte habe ich eine neue Klasse erstellt, in die alle eingelesenen Daten in Arrays geschrieben werden. Sozusagen eine Datenklasse. Ich habe nun pro Page eine Variable mit der Datenklasse als ihre Bezugsklasse erstellt. Ich erhoffte mir damit auch untereinander Daten austauschen zu können, da ja alle Daten in der Datenklasse vorhanden sind und ich von jeder Page auf alle Arrays der Datenklasse zugreifen kann. Mein Problem ist, dass ich immer nur auf die Arrays zugreifen kann, die die aktuelle Page beschrieben hat. Also wenn Page Nr.1 Array1 beschrieben hat, so kann ich mit Page Nr.2 nicht von Array1 Daten abholen. Es gibt zwar keinen Fehler aus, aber es werden nur Leerstrings übergeben. Wo liegt mein Denkfehler?<br />
Ich programmiere übrigens in VC++ im Visual Studio 2003</p>
<p>Mit Dank für Hilfe und freundlichem Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044985</guid><dc:creator><![CDATA[Imor]]></dc:creator><pubDate>Tue, 25 Apr 2006 16:42:16 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Tue, 25 Apr 2006 16:57:12 GMT]]></title><description><![CDATA[<p>Ehm ohne Code ist das noch schwer zu beurteilen. Aber wenn ich raten darf ...<br />
Sagen wird deine Datenklasse heisst CData. Dann hast du überall eine CData Variable definiert. Aber so hast du überall eine eigene Datenstruktur. Somit für jede Page eine eigene Struktur. Was du machen musst, ist die Variable nur einmal zu erstellen, und dem Rest einen Zeiger auf die Variable zu übergeben.</p>
<p>Kann natürlich jetzt auch daneben legen, da ich keinen Code sehe. Aber von mir aus gesehen, scheint es genau dies zu sein ^^<br />
Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045005</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 25 Apr 2006 16:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Tue, 25 Apr 2006 17:11:06 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort, ich nahm an, es sei ein Grundsatzproblem, daher postete ich keinen Code. Um das Ganze etwas verständlicher zu machen, obwohl ich glaube, dass Du meine Sache voll erkannt hast:</p>
<p>angenommen<br />
Datenklasse= CData ,</p>
<p>dann habe ich in allen Pageheaderdateien:<br />
&quot;CData Data&quot; reingeschrieben und war der Meinung, dass ich über <a href="http://Data.XXX" rel="nofollow">Data.XXX</a> an alle Arrays rankomme, da er mir im IntelligentEdit auch alle anzeigt.</p>
<p>Aber dein Einwand erscheint mir nun logisch. Könntest Du mir noch kurz erläutern, wie ich nur eine Variable erstelle und dann mit den Pointern draufzeige? Die Idee ist mir klar, nur wüsste ich jetzt nicht, wo ich die Variable erstellen und wie ich mit den Pointern drauf zeigen muss, da es ja dann eine übergeordnete Variable sein muss, auf die ich von jeder Pageheaderdatei mit einem Pointer zeige, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045031</guid><dc:creator><![CDATA[Imor]]></dc:creator><pubDate>Tue, 25 Apr 2006 17:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Wed, 26 Apr 2006 07:02:08 GMT]]></title><description><![CDATA[<p>Ich habe nun in der ersten Page eine Variable auf die Datenklasse erstellt und auf den anderen Pages Pointer auf die Klasse der ersten Page. Wenn ich nun über die Pointer und der Variablen auf die Funktionen der Datenklasse zugreifen möchte, zeigt mir IntelliSense zwar alles an, so dass ich auswählen kann, er sagt aber im Ablauf des Programms, es würde eine Zugriffsverletzung im Lesebereich stattfinden.</p>
<p>Also:</p>
<p>Page1.h<br />
Cdata Daten</p>
<p>Page2.h<br />
CPage1 *pDaten</p>
<p>pDaten-&gt;Daten.GetValue() ==&gt; Zugriffsverletzung</p>
<p>Kann mir jemand helfen?</p>
<p>Gruß<br />
Imor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045409</guid><dc:creator><![CDATA[Imor]]></dc:creator><pubDate>Wed, 26 Apr 2006 07:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Wed, 26 Apr 2006 12:39:57 GMT]]></title><description><![CDATA[<p>Hehe ... Sag mal solltest du nicht zuerst mal ein Tutorial in C++ machen? Wäre vielleicht sinnvoll. Das ist mehr als Grundlagen, die dir da fehlen.</p>
<p>Also mal schauen ob ich das erklären kann:<br />
Mit z.b. CData m_Data; definierst du eine Variable, welche vom Type CData ist. Dabei wird speicher reserviert, auf welchem m_Data vom Type CData liegt. Wenn du nun eine Zeiger zu dieser Variable haben willst, musst du ihn auch definieren. CData* m_pData; erstellt einen leeren Zeiger auf ein Objekt vom Typ CData. Der ist aber eben leer bzw. Null. Du musst den Zeiger noch definieren. Den Zeiger von einer Variable bekommst du, indem du folgendes machst:</p>
<pre><code class="language-cpp">CData m_Data; // Die Variable
CData* m_pData = &amp;m_Data; // m_pData ist ein Zeiger auf m_Data
</code></pre>
<p>Wie du das nun in deinem Programm umsetzt ist schwierig. Da es ganz unterschiedlich gelöst werden kann. Es gibt nicht nur verschiedene Möglichkeiten von Speicherreservierung, sondern auch ganz verschiedene Möglichkeiten damit umzugehen. Deshalb empfehle ich dir auch ein Tutorial in Sachen c++ zuerst zu absolvieren. Denn wenn du hier nicht sauber arbeitest, könnten am Ende auch riesige Speicherlecks entstehen.</p>
<p>Tutorials für C++ gibt es als Bücher oder auch Gratis im Inet in riesen Mengen. Wenn du schon nur oben rechts hinschaust entdeckst du zwei links:<br />
<a href="http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=mbBooks&amp;file=index" rel="nofollow">Bücher Empfehlungen</a><br />
<a href="http://www.c-plusplus.net/cms/modules.php?op=modload&amp;name=Downloads&amp;file=index" rel="nofollow">EBooks Tutorials</a><br />
<a href="http://www.google.ch/search?hl=de&amp;q=C%2B%2B+Tutorial&amp;btnG=Google-Suche&amp;meta=lr%3Dlang_de" rel="nofollow">Oder einfach im Google suchen</a></p>
<p>Ich empfehle dir dringend zuerst ein Tutorial für die Grundlagen zu machen. Sonst programmierst wild in der Gegendrum ohne zu wissen, was du eigentlich machst. Dabei sollte ein Programmierer sich ganz im klaren sein, was sein Programm eigentlich tut.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045664</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 26 Apr 2006 12:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Wed, 26 Apr 2006 16:03:25 GMT]]></title><description><![CDATA[<p>Mmm, da habe ich deinen vorletzten Post wohl falsch verstanden. Dass man so einen Pointer in der eigenen Klasse erstellt, weiss ich. Ich hatte dich aber so verstanden, dass ich nur in EINER Page eine Variable erstellen soll, die zur Klasse Cdata gehört und dann mit allen anderen Pages über Pointer auf diese eine Variable zugreifen soll. Da nur dann gegeben ist, dass diese Variable auf alle Daten der Klasse zugreifen kann, weil nur sie in der DatenKlasse agiert. Mein Problem lag darin, den Pointer so zu setzen, dass er auf eine Variable in einer anderen Klasse, nämlich der 1. Pageklasse zeigt. Denn die CData-Variable der 1. Pageklasse ist in den anderen Page-Klassen nicht bekannt. Wenn ich dich richtig verstanden habe, muss ich doch, als Beispiel, von der 2. Pageklasse über einen Pointer der auf die CData-Variable der 1. PageKlasse zeigt, auf die Datenklasse zugreifen.<br />
Dieses ging meiner Meinung nach nur, in dem ich in den restlichen Klassen Pointer der 1.Pageklasse erstelle, die ich auf die CData-Variable in der 1. Pageklasse zeigen lasse.<br />
Oder hast Du das anders gemeint?</p>
<p>Gruß<br />
Imor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1045815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1045815</guid><dc:creator><![CDATA[Imor]]></dc:creator><pubDate>Wed, 26 Apr 2006 16:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Wed, 26 Apr 2006 23:01:39 GMT]]></title><description><![CDATA[<p>Also echt ich empfehle dir mal ein Tutorial zu machen.</p>
<p>Du kannst natürlich die CData Variable als Member-Variable der 1. Pageklasse deklarieren. Und dann über einen Zeiger auf die 1. Pageklasse auf die CData Variable zugreifen. Doch das muss nicht sein. Du kannst auch direkt auf die CData Variable zugreifen, wenn du den anderen Pageklassen einen Zeiger auf CData übergibst. Daher hätte ich persönlich folgendes vorgeschlagen:<br />
Du ersellst irgendwo die CData, bevor die Pageklassen initialisiert werden. Dabei musst du natürlich darauf achten, dass die Variable nicht einfach nur in einer Funktion läuft, sondern sie muss andauernd verfügbar sein. Dass heisst allerdings auch, dass du darauf schauen musst, dass sie irgendwann wieder verschwindet. Dazu würde sich z.b. ein Speicherplatz auf dem Heap eignen. Schau dir dazu mal die Elemente &quot;new&quot; und &quot;delete&quot; in der MSDN an. Nun übergibst du mit der Initialisierung der Pageklassen einen Zeiger auf das CData Objekt, welche auf dem Heap gespeichert sein sollte. Anderst gesagt, jede Pageklasse hat einen Zeiger auf ein CData Objekt, welchem eben dieses Objekt zugewiesen wird, welches auf dem Heap vorhanden ist. So kann jede Pageklasse unabhängig voneinander darauf zugreifen und ihre Daten reinschreiben, bzw. auslesen.</p>
<p>Und wenn die Pageklassen die CData nicht mehr brauche, bzw. wenn die Pageklassen beendet werden, sorgst du dafür, dass der Speicher auf dem Heap wieder frei gegeben wird.</p>
<p>Allerdings habe ich keine Ahnung wie dein Programm aufgebaut ist. Daher kann ich nicht sagen, ob du das überhaupt machen kannst. Mir sind die Hände gebunden ohne Quellcode Schnippsel. Zudem scheint mir dein Wissen in C++ ja so gut wie NULL zu sein. Mach doch bitte ein Tutorial. Kauf dir ein Buch zum ganzen. Es ist sonst viel zu mühsam dir all dies zu erklären und ich habe auch keine Lust dazu.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1046064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1046064</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 26 Apr 2006 23:01:39 GMT</pubDate></item><item><title><![CDATA[Reply to Variablenübergabe bei Tab-Control-Pages on Tue, 02 May 2006 18:48:29 GMT]]></title><description><![CDATA[<p>Ich habe nun mehrere Sachen ausprobiert um mein Problem zu lösen. Leider ohne Erfolg. Ich habe zum Schluss folgende Variante gewählt. Es soll ein Wert von der einen Seite eingegeben und in die Datenklasse geschrieben werden und von der anderen Seite wieder angezeigt werden.</p>
<p>Klasse CData</p>
<p>Data.h:<br />
CString *Wert;</p>
<p>Data.cpp:<br />
Wert= new CString; Damit der Wert im Heap bestehen bleibt</p>
<p>Klasse Page1</p>
<p>Page1.h<br />
CData m_Data, *pData;</p>
<p>Page1.cpp<br />
Initialisierung mit pData=&amp;m_Data;</p>
<p>Wert wird aus dem Edit-Feld gelesen!</p>
<p>*pData-&gt;Titel=Wert;</p>
<p>Klasse Page2</p>
<p>Page2.h<br />
CData m_Data, *pData;</p>
<p>Page1.cpp<br />
Initialisierung mit pData=&amp;m_Data;</p>
<p>Wert=*pData-&gt;Titel;</p>
<p>Wert wird in ein Edit-Feld eingetragen</p>
<p>Die Struktur funktioniert aber wieder nur auf der Seite 1, auf der der Wert aus dem EditFeld gelesen wurde. Hier konnte ich mir den Wert erneut ausgeben lassen,<br />
jedoch nicht auf der Seite2. Das Problem ist bei den Pointern, dass ich auch hier über eine Variablenadresse gehen muss, um Zugriff zu der Datenklasse zu erlangen. Diese Variable hat dann aber wieder einen Gültigkeitsbereich, der nur für dieses Objekt gültig ist. Ich habe das Ganze auch schon mit einem direkten Pointer auf die Datenklasse über den Scopeoperator probiert, aber das Problem blieb. Mir ist noch nicht klar, wie ich eine Verbindung zur Datenklase herstellen kann, die alle Daten benutzen müssen. Also anstatt, dass sich jeder Wert eine eigene Strasse baut, alle dieselbe vorhandene Straße nehmen und somit auf alle Werte von allen Seiten zugegriffen werden kann.<br />
Wäre nett, wenn mir da nochmal jemand hilfreich in die Seite springen könnte. <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>Und zu dem NULL Ahnung haben, ja ich habe noch kein Programm dieser Intensität geschrieben und lerne das aus mehreren Büchern Gelesene erst wirklich durch Anwendung und Ausprobieren.</p>
<p>Gruß<br />
Imor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049856</guid><dc:creator><![CDATA[Imor]]></dc:creator><pubDate>Tue, 02 May 2006 18:48:29 GMT</pubDate></item></channel></rss>