<?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[Speicher Adresse einer TStringList]]></title><description><![CDATA[<p>hallo</p>
<p>bin noch neu mit der VCL. Ich möchte rausfinden an welcher speicherstelle eine TStringList ist. Ich dachte man könnte dies mit einem referenz operator tun?<br />
z.b. char *addr = &amp;List; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> dann noch eine frage: Wieso müssen TStringList opbjekte nicht über den stern operator angesprochen werden? Das ist doch bei zeigern so üblich oder nicht? also *List-&gt;Add() anstelle von List-&gt;Add()... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/138426/speicher-adresse-einer-tstringlist</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 11:15:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/138426.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Feb 2006 11:52:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 11:52:37 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>bin noch neu mit der VCL. Ich möchte rausfinden an welcher speicherstelle eine TStringList ist. Ich dachte man könnte dies mit einem referenz operator tun?<br />
z.b. char *addr = &amp;List; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> dann noch eine frage: Wieso müssen TStringList opbjekte nicht über den stern operator angesprochen werden? Das ist doch bei zeigern so üblich oder nicht? also *List-&gt;Add() anstelle von List-&gt;Add()... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003207</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 11:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 12:58:03 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Schau dir nochmal die Grundlagen von Pointern an, das ist Basiswissen in C++.</p>
<p>Die Adresse von einem Pointer bekommst du so</p>
<pre><code class="language-cpp">TStringList *SList...;
int Adresse = SList;
</code></pre>
<p>Der Referenzierung wird gleich durch das -&gt; gemacht, so das diese beiden Ausdrücke gleich sind :<br />
S</p>
<pre><code class="language-cpp">SList-&gt;Add(...);
(*SList).Add(...);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003231</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 26 Feb 2006 12:58:03 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 13:02:02 GMT]]></title><description><![CDATA[<p>noch ein weiteres problem. ich kriege nachdem cih eine TStringList wieder freigebe eine EInvalidPointerOperation oder so. Also eine Unzulässige Zeigeroperation exception. Ich habe im exe projekt sowas:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
	List = new TStringList();
	Engine *engine = new Engine();
    if(engine-&gt;RenderObject(List)
    {
    	//....
    }
    delete List; //Unzulässige Zeigeroperation!?
    delete engine;
}
</code></pre>
<p>Die betroffene DLL funktion sieht so aus:</p>
<pre><code class="language-cpp">bool Engine::RenderObject(TStringList *Sectors)
{
	if(Sectors != NULL)
    {
        //...
        //...
        //...
    	Sectors-&gt;Add(&quot;...&quot;);
        return true;
    }
    return false;
}
</code></pre>
<p>Ich gebe doch den speicher des List objektes, über die DLL nicht wieder frei, warum also diese exception die nach delete List auftritt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003234</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 13:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 13:03:36 GMT]]></title><description><![CDATA[<p>hallo akari <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<blockquote>
<p>SList-&gt;Add(...);<br />
(*SList).Add(...);</p>
</blockquote>
<p>das ist mir neu! stand bislang in keinem buch <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="😉"
    /> man lernt nie aus, besten dank dazu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003236</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 13:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 13:08:47 GMT]]></title><description><![CDATA[<p>btw: heisst das also das variable/objkete die auf dem stack erzeugt werden, bezüglich pointer immer mit einem stern operator gekennzeichnet werden müssen und variable/objkete die auf dem heap erzeugt werden, also dynamisch, ohne den sternoperator gekennzeichnet werden müssen, da es klar ist das diese im speicher adressiert sind? ist das inetwa so zu verstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003239</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 13:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 13:15:48 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Schumo schrieb:</p>
<blockquote>
<p>Ich gebe doch den speicher des List objektes, über die DLL nicht wieder frei, warum also diese exception die nach delete List auftritt?</p>
</blockquote>
<p>aus deinem Quellcode kann ich noch keinen Grund für die Zugriffsverletzung ausmachen. Sicher das du nicht doch verher schon ein delete ausführst?</p>
<blockquote>
<p>heisst das also das variable/objkete die auf dem stack erzeugt werden, bezüglich pointer immer mit einem stern operator gekennzeichnet werden müssen und variable/objkete die auf dem heap erzeugt werden, also dynamisch, ohne den sternoperator gekennzeichnet werden müssen, da es klar ist das diese im speicher adressiert sind? ist das inetwa so zu verstehen?</p>
</blockquote>
<p>Nein. Pointer bzw. Referenzierung sind von Heap/Stack erstmal unabhängig. Wobei natürlich auf den Heap mit Pointern zugegriffen wird.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003246</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 26 Feb 2006 13:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 15:03:56 GMT]]></title><description><![CDATA[<blockquote>
<p>Sicher das du nicht doch verher schon ein delete ausführst?</p>
</blockquote>
<p>ja schon. code mässig habe ich sogut wie alles gepostet. bei den &quot;//...&quot; steht nichts weiter. Kann es an der DLL an sich liegen, also wie man sie verwendet? ich linke die lib gleich mit und erspare mir den weg über LoadLibrary. An was könnte es sonst noch liegen? Lasse ich in der exe anwendung das delete List; weg und teste mit einem zweiten button die List, existiert sie weiterhin. Insofern verstehe ich nicht wo bitte der speicher freigegeben wird. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003361</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 15:03:56 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 15:09:43 GMT]]></title><description><![CDATA[<p>Vielleicht nicht beachtet, was da steht, wenn man eine DLL entwirft:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
//   Wichtiger Hinweis zur DLL-Speicherverwaltung, falls die DLL die statische
//   Version der Laufzeitbibliothek (RTL) verwendet:
//
//   Wenn die DLL Funktionen exportiert, die String-Objekte (oder Strukturen/
//   Klassen, die verschachtelte Strings enthalten) als Parameter oder Funktionsergebnisse übergibt,
//   muß die Bibliothek MEMMGR.LIB im DLL-Projekt und anderen Projekten,
//   die die DLL verwenden, vorhanden sein. Sie benötigen MEMMGR.LIB auch dann,
//   wenn andere Projekte, die die DLL verwenden, new- oder delete-Operationen
//   auf Klassen anwenden, die nicht von TObject abgeleitet sind und die aus der DLL exportiert
//   werden. Durch das Hinzufügen von MEMMGR.LIB wird die DLL und deren aufrufende EXEs
//   angewiesen, BORLNDMM.DLL als Speicherverwaltung zu benutzen. In diesem Fall
//   sollte die Datei BORLNDMM.DLL zusammen mit der DLL weitergegeben werden.
//
//   Um die Verwendung von BORLNDMM.DLL, zu vermeiden, sollten String-Informationen als &quot;char *&quot; oder
//   ShortString-Parameter weitergegeben werden.
//
//   Falls die DLL die dynamische Version der RTL verwendet, müssen Sie
//   MEMMGR.LIB nicht explizit angeben.
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1003371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003371</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Sun, 26 Feb 2006 15:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 15:26:47 GMT]]></title><description><![CDATA[<p>hab ich tatsächlich nicht beachtet. danke nun klappt es. eine frage noch zum posting zuvor:</p>
<blockquote>
<p>Die Adresse von einem Pointer bekommst du so<br />
C/C++ Code:<br />
TStringList *SList...;<br />
int Adresse = SList;</p>
</blockquote>
<p>da bekomme ich aber wie erwartet die meldung:</p>
<blockquote>
<p>[C++ Fehler] Unit1.cpp(28): E2034 Konvertierung von 'TStringList *' nach 'int' nicht möglich</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1003392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003392</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 15:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 15:33:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>sorry, must noch casten</p>
<pre><code class="language-cpp">int Adresse = (int)SList;  //oder
int Adresse = reinterpret_cast&lt;int&gt;(SList);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003404</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 26 Feb 2006 15:33:41 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 15:54:11 GMT]]></title><description><![CDATA[<p>danke. eine kleine offtopic frage noch.<br />
stimmt es das die typumwandlung &quot;(typ)var&quot; C stil ist, und &quot;typ(var)&quot; C++ stil?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003424</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 15:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 15:59:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>nein</p>
<pre><code class="language-cpp">var = (typ)var2; // Der C-Style Cast
var = reinterpret_cast&lt;typ&gt;(var2); // Ein C++ Style Cast
var = typ(var2); // Aufruf des Konstruktors von typ, mit var2 als Parameter
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003427</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 26 Feb 2006 15:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 16:18:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Aufruf des Konstruktors von typ</p>
</blockquote>
<p>versteh ich nun nicht ganz mit elementarischen typen wie int char etc. string ist ja eine klasse der stl soviel ich weis, richtig? aber die elementarischen typen sind doch die C++ schlüsselwörter, eben int, float, char, double, etc.</p>
<p>wenn du von konstruktor sprichst kommt mir eben als erstes eine klasse in den sinn und dann müsste ja ein int eine klasse sein? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> strange.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003450</guid><dc:creator><![CDATA[Schumo]]></dc:creator><pubDate>Sun, 26 Feb 2006 16:18:35 GMT</pubDate></item><item><title><![CDATA[Reply to Speicher Adresse einer TStringList on Sun, 26 Feb 2006 16:28:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Auch die PODs wie int haben einen Konstruktor. Probiers doch mal aus :</p>
<pre><code class="language-cpp">int x = int(5);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1003459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1003459</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 26 Feb 2006 16:28:18 GMT</pubDate></item></channel></rss>