<?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[List index out of bounds bei TStringList]]></title><description><![CDATA[<p>Habe die Suchfunktion mehrmals benutzt, doch keine Lösung gefunden.. :-\</p>
<pre><code class="language-cpp">TStringList* Zeit = new TStringList();
// z.B. 99:99:99 in 99 Stunden, 99 Minuten usw. splitten
        Zeit-&gt;Delimiter = ':';
        Zeit-&gt;DelimitedText = dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components[i])-&gt;Caption;
// i wurde schon vorher ein Wert zugeschrieben.
        Stunden  = StrToInt(Zeit-&gt;Strings[0]);
        Minuten  = StrToInt(Zeit-&gt;Strings[1]);
        Sekunden = StrToInt(Zeit-&gt;Strings[2]);
</code></pre>
<p>Doch es kommt der Fehler:<br />
EStringListError 'List index out of bounds (0)'</p>
<p><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>
<p>Merci<br />
Psychomann</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/96085/list-index-out-of-bounds-bei-tstringlist</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 04:24:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/96085.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Dec 2004 09:17:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 09:17:00 GMT]]></title><description><![CDATA[<p>Habe die Suchfunktion mehrmals benutzt, doch keine Lösung gefunden.. :-\</p>
<pre><code class="language-cpp">TStringList* Zeit = new TStringList();
// z.B. 99:99:99 in 99 Stunden, 99 Minuten usw. splitten
        Zeit-&gt;Delimiter = ':';
        Zeit-&gt;DelimitedText = dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components[i])-&gt;Caption;
// i wurde schon vorher ein Wert zugeschrieben.
        Stunden  = StrToInt(Zeit-&gt;Strings[0]);
        Minuten  = StrToInt(Zeit-&gt;Strings[1]);
        Sekunden = StrToInt(Zeit-&gt;Strings[2]);
</code></pre>
<p>Doch es kommt der Fehler:<br />
EStringListError 'List index out of bounds (0)'</p>
<p><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>
<p>Merci<br />
Psychomann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681844</guid><dc:creator><![CDATA[Psychomann]]></dc:creator><pubDate>Tue, 28 Dec 2004 09:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 09:41:56 GMT]]></title><description><![CDATA[<p>An welcher Stelle kommt denn der Fehler?<br />
Hast Du Dir mal angeschaut, was eigentlich DelimitedText zugewiesen wird?<br />
Welchen Wert hat denn die Eigenschaft Count?</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681852</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 28 Dec 2004 09:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 09:53:43 GMT]]></title><description><![CDATA[<p>Der Fehler kommt, wo die Funktion aufgerufen wird..</p>
<pre><code class="language-cpp">void __fastcall TSuperForm::BauenClick(TObject *Sender)
{
        Vorgang();
} // &lt;- in dieser Zeile
</code></pre>
<p>Habe mal ShowMessage(Zeit-&gt;Count) eingebaut und es wurde &quot;0&quot; angezeigt..<br />
Da liegt wahrscheinlich der Fehler. Muss ich das manuell auf 3 stellen?<br />
*EDIT: Beim Versuch kam der Fehler TStrings::Count ist not accessible EDIT*</p>
<p>und</p>
<pre><code class="language-cpp">dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components[i])-&gt;Caption;
</code></pre>
<p>ist ein String wie: &quot;12:23:56&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681853</guid><dc:creator><![CDATA[Psychomann]]></dc:creator><pubDate>Tue, 28 Dec 2004 09:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 10:02:52 GMT]]></title><description><![CDATA[<p>Ich frage mich, was in Vorgang() passiert.</p>
<p>Psychomann schrieb:</p>
<blockquote>
<p>Habe mal ShowMessage(Zeit-&gt;Count) eingebaut und es wurde &quot;0&quot; angezeigt.</p>
</blockquote>
<p>Dann ist es doch kein Wunder, wenn Du einen IndexOutOfBounds-Fehler bekommst.<br />
Warum hast Du eigentlich diesen dynamic_cast drin? Hast Du mehrere Labels o.ä., die Du damit durchwanderst?<br />
Vielleicht zeigst Du mal einfach mehr Code und beschreibst auch mal, was Du eigentlich erreichen willst.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681862</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 28 Dec 2004 10:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 10:03:19 GMT]]></title><description><![CDATA[<p>Psychomann schrieb:</p>
<blockquote>
<pre><code class="language-cpp">dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components)-&gt;Caption;
</code></pre>
<ul>
<li></li>
</ul>
<p>ist ein String wie: &quot;12:23:56&quot;*</p>
</blockquote>
<ul>
<li></li>
</ul>
<p>Höchstwahrscheinlich eben nicht. Lass dir den String mal testhalber ausgeben, bevor du ihn [i]DelimitedText* zuweist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681863</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Tue, 28 Dec 2004 10:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 10:10:07 GMT]]></title><description><![CDATA[<p>Hier der Code:</p>
<pre><code class="language-cpp">void Bauvorgang()
{
// Alle Komponenten nach TRadioButton durchsuchen........
// Falls gefunden, dann alle auf Enabled = false stellen.
        for (int i = 1; i &lt; Form1-&gt;ComponentCount; i++)
        {
                if (Form1-&gt;Components[i]-&gt;ClassNameIs(&quot;TRadioButton&quot;))
                {
                        dynamic_cast&lt;TRadioButton*&gt;(Form1-&gt;Components[i])-&gt;Enabled = false;
// Welches Gebäude wurde gebaut?
                        if (dynamic_cast&lt;TRadioButton*&gt;(Form1-&gt;Components[i])-&gt;Checked == true)
                        {
                                for (int h = 1; h &lt;= 19; h++)
                                {
// Sicherung der Nummer der Komponente und der Zahl
// hinter dem Namen: BuildingX (z.B. x = 8)
                                        if (dynamic_cast&lt;TRadioButton*&gt;(Form1-&gt;Components[i])-&gt;Name == &quot;Building&quot; + IntToStr(h))
                                        {
                                                GebaeudeBau1 = h;
                                                GebaeudeBau2 = i;
                                        }
                                }
                        }
                }
        }

        TStringList* Zeit = new TStringList();
// z.B. 99:99:99 in 99 Stunden, 99 Minuten usw. splitten
        Zeit-&gt;Delimiter = ':';
        Zeit-&gt;DelimitedText = dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components[GebaeudeBau2])-&gt;Caption;
        Stunden  = StrToInt(Zeit-&gt;Strings[0]);
        Minuten  = StrToInt(Zeit-&gt;Strings[1]);
        Sekunden = StrToInt(Zeit-&gt;Strings[2]);

// Alle Labels mit &quot;Dauer&quot; am Anfang in der Property
// Name umstellen
        for (int i = 1; i &lt; Form1-&gt;ComponentCount; i++)
        {
                if (Form1-&gt;Components[i]-&gt;ClassNameIs(&quot;TLabel&quot;))
                {
                        for (int h = 1; h &lt;= 20; h++)
                        {
                                if (dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components[i])-&gt;Name == &quot;Dauer&quot; + IntToStr(h))
                                        dynamic_cast&lt;TLabel*&gt;(Form1-&gt;Components[i])-&gt;Caption = &quot;Bauvorgang läuft...&quot;;
                        }
                }
        }

// Timer starten
        Form1-&gt;BuildingZeit-&gt;Enabled = true;
}
</code></pre>
<p>Das geht so. Es gibt 20 RadioButtons, die für 20 Gebäude stehen. Ein Button ist da, der ruft Bauvorgang() auf, sonst nichts. Die Labels (, wo die Zeit steht) heissen: Dauer1 bis Dauer20. Die dazugehörigen RadioButtons (Gebäude) sind Building1 bis Building20.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681870</guid><dc:creator><![CDATA[Psychomann]]></dc:creator><pubDate>Tue, 28 Dec 2004 10:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 11:56:42 GMT]]></title><description><![CDATA[<p>Also, wenn ich das richtig herauslese, dann ist Form1-&gt;Components[GebaeudeBau2] wahrscheinlich kein TLabel, sondern ein TRadioButton,<br />
da GebaeudeBau2 der Index der Komponente ist, die in der ersten if-Bedingung auf ClassNameIs(&quot;TRadioButton&quot;) abgeprüft wird.<br />
Der Code ist einigermaßen schwer verständlich und ich verstehe auch nicht, warum hier eine Schleife durchlaufen wird, um dann einen<br />
Wert zu setzen und daraus die Zeit zu lesen???<br />
Ich denke, es wäre sehr viel einfacher und übersichtlicher, anstatt dem ganzen dynamic-gecaste drei Arrays zu definieren, die die<br />
benötigten Komponenten aufnehmen und diese dann in einer for-Schleife durchzugehen.</p>
<p>Wenn Du schon dynamic_cast verwendest, solltest Du auch überprüfen, ob der Rückgabewert nicht null ist.<br />
Konstrukte wie</p>
<pre><code class="language-cpp">if (dynamic_cast&lt;TRadioButton*&gt;(Form1-&gt;Components[i])-&gt;Name == &quot;Building&quot; + IntToStr(h))
</code></pre>
<p>können auch ganz schön daneben gehen. Der cast ist hier ohnehin unnötig, da Name eine Standardeigenschaft aller Komponenten ist.</p>
<p>Du könntest Dir, wenn wirklich alles dynamisch gemacht werden muss, auch mal FindComponent() anschauen. Damit könntest Du Dir dann wenigstens<br />
die vielen unübersichtlichen Schleifen sparen.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681919</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 28 Dec 2004 11:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to List index out of bounds bei TStringList on Tue, 28 Dec 2004 13:39:20 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> verdammt, stimmt ja. Danke dir. Das war der Fehler.</p>
<p>Habe es jetzt mit Arrays probert und es funktioniert einwandfrei.</p>
<p>Psychomann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/681998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/681998</guid><dc:creator><![CDATA[Psychomann]]></dc:creator><pubDate>Tue, 28 Dec 2004 13:39:20 GMT</pubDate></item></channel></rss>