<?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[AnsiString an ein char Array anhängen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte einen AnsiString an ein char Array anhängen.</p>
<pre><code class="language-cpp">char *test;
AnsiString a = &quot;H:\temp\abc.hex&quot;;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	test = new char[30];
     test = &quot;File not Found  &quot;;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	test+16 = a.c_str();
	Application-&gt;MessageBox(test,&quot;xxxxxx&quot;,MB_OK);
}
</code></pre>
<p>In der Message Box sollte dann stehen &quot;File not found H:\temp\abc.hex&quot;<br />
Bei der Methode oben kommt die Fehlermeldung &quot;L-Value erwartet&quot;.<br />
Wieso bei test handelt es sich doch um einen Zeiger, also zeigt test+16 auf<br />
pos 16 im Array.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/115938/ansistring-an-ein-char-array-anhängen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 20:46:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/115938.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Jul 2005 21:13:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Wed, 20 Jul 2005 21:13:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte einen AnsiString an ein char Array anhängen.</p>
<pre><code class="language-cpp">char *test;
AnsiString a = &quot;H:\temp\abc.hex&quot;;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	test = new char[30];
     test = &quot;File not Found  &quot;;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	test+16 = a.c_str();
	Application-&gt;MessageBox(test,&quot;xxxxxx&quot;,MB_OK);
}
</code></pre>
<p>In der Message Box sollte dann stehen &quot;File not found H:\temp\abc.hex&quot;<br />
Bei der Methode oben kommt die Fehlermeldung &quot;L-Value erwartet&quot;.<br />
Wieso bei test handelt es sich doch um einen Zeiger, also zeigt test+16 auf<br />
pos 16 im Array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835324</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Wed, 20 Jul 2005 21:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Wed, 20 Jul 2005 21:47:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vieleicht sollte es etwa so aussehen?</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	test = new char[30];
        strcpy(test, &quot;File not Found  &quot;);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int adr;
        adr = test+16;
	strcat(adr, a.c_str);
	Application-&gt;MessageBox(test,&quot;xxxxxx&quot;,MB_OK);
}
</code></pre>
<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="😕"
    /> Probier mal aus, hab kein Compiler zur Hand <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/835345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835345</guid><dc:creator><![CDATA[Keine Ahnung]]></dc:creator><pubDate>Wed, 20 Jul 2005 21:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Wed, 20 Jul 2005 21:50:43 GMT]]></title><description><![CDATA[<p>muss blos aufpassen das du den zweiten String vor dem abzuschliessendem \0 anhängst<br />
vieleicht sind das dann nicht 16 Zeichen, hab nicht gezählt <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/835347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835347</guid><dc:creator><![CDATA[Keine Ahnung]]></dc:creator><pubDate>Wed, 20 Jul 2005 21:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Wed, 20 Jul 2005 22:45:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
char* adr;          /* !!Muss ein Pointer vom DatenTyp char sein!! */ 
adr = strcat(test+16, a.c_str);   /* Fehlermeldung can't convert char* to fastcall*(_closure)..... auf, diese Funktion muss etwas mit
einen Funktionszeiger am Hut haben.
google 
char *  strcat ( char * dest, const char * src ); 
Append string.
Appends src string to dest string. The terminating null character in dest is overwritten by the first character of src. The resulting string includes a null-character at end. Müsste eigentlich passen, nur das die Funktion ein Zeiger auf einen String zurückgibt*/ 

    Application-&gt;MessageBox(adr,&quot;xxxxxx&quot;,MB_OK); 
}
</code></pre>
<p>Funktioniert nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835348</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Wed, 20 Jul 2005 22:45:33 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 05:53:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>wo ist denn da das &quot;new&quot; und das &quot;delete&quot;</p>
<p>desweiteren ist das sehr gefaehrlich den char* auf 30 Zeichen festzulegen</p>
<p>was passiert denn wenn du mehr als 30 Zeichen da reinschreibst <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="😃"
    /></p>
<p>MfG<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835414</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Thu, 21 Jul 2005 05:53:02 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 06:16:27 GMT]]></title><description><![CDATA[<p>Warum so kompliziert?</p>
<pre><code class="language-cpp">String test=&quot;1234567890&quot;;
Application-&gt;MessageBox(test.c_str()+5,&quot;www&quot;,MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/835430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835430</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 06:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 06:26:54 GMT]]></title><description><![CDATA[<p>streicht bitte auch strcpy aus euren Köpfen! str<strong>n</strong>cpy ist Trumpf!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835433</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 06:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 06:30:04 GMT]]></title><description><![CDATA[<p>Warum?</p>
<p>Wir sicn hier im VCL Forum da könne wir StrLCopy nutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835437</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 06:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 06:47:15 GMT]]></title><description><![CDATA[<p>Christian211 schrieb:</p>
<blockquote>
<p>Warum?</p>
</blockquote>
<p>Quizfrage: Was passiert hier?</p>
<pre><code class="language-cpp">test = new char[2];
        strcpy(test, &quot;File not Found  &quot;);
</code></pre>
<p>Der Einwand mit dem VCL Forum ist zwar nicht unrichtig, aber hier wurde bereits strcpy verwendet...Macht in diesem Fall jetzt auch beschränkt sinn, hier die VCL Kapselungen von AnsiC-Funktionen zu benutzen. Anders siehts mit komplexen KLassen wie z.B. std::string aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835444</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 06:47:15 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 06:53:20 GMT]]></title><description><![CDATA[<p>Das &quot;Warum&quot; bezog sich nicht auf das für und wider von strcpy. Die Problematik ist mir bewusst.</p>
<p>Es bezog sich daraufm warum nicht StrLCopy benutzt wird.</p>
<blockquote>
<p>Macht in diesem Fall jetzt auch beschränkt sinn, hier die VCL Kapselungen von AnsiC-Funktionen zu benutzen</p>
</blockquote>
<p>Kann ich nicht nachvollziehen. Für strncpy und weitere sind Headerdateien einzubinden für die entsprechende VCL Funktion nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835448</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 06:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 07:02:43 GMT]]></title><description><![CDATA[<p>...und die Anzahl einzubindender Header war nochmal ein Indiz wofür...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835450</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 07:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 07:05:24 GMT]]></title><description><![CDATA[<p>Das die Funktion von der VCL gekapselt ist war nochmal ein Indiz wofür...?</p>
<p>Es war hier von mir ein Vorschlag, dass ev. auch die Funktionen der VCL Beachtung finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835453</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 07:05:24 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 07:24:01 GMT]]></title><description><![CDATA[<p>Christian211 schrieb:</p>
<blockquote>
<p>Das die Funktion von der VCL gekapselt ist war nochmal ein Indiz wofür...?</p>
</blockquote>
<p>Keine Ahnung. Worauf willst du hinaus?</p>
<p>Weitere Quizfrage: ist <em>strcpy</em> Teil der VCL?</p>
<p>Das du auf meine vorherige Frage bzgl. Headerfiles nicht eingegangen bist, werte ich als Einsicht, das dein Argument nichtig war. Korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835467</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 07:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 07:39:42 GMT]]></title><description><![CDATA[<blockquote>
<p>werte ich als Einsicht, das dein Argument nichtig war. Korrekt?</p>
</blockquote>
<p>Nein,<br />
- als Entwickler ist man schreibfaul<br />
- als Anfänger weiss man nicht, dass man eine Header einbinden muss<br />
- als Anfänger weiss man of nicht den Namen der Header zum einbinden (die F1 Taste klemmt ja öfters, und einige Compiler werden offenbar ohne Hilfe ausgeliefert)</p>
<blockquote>
<p>Keine Ahnung. Worauf willst du hinaus?</p>
</blockquote>
<p>Was in Gottes Namen hat die Kapselung einer Funktion damit zu tun, ob man sie benutzen sollte oder nicht? Die gnaze VCL kapselt die Win 32 API. Diese Funktionen sind bloß wenig bekannt. Schließlich war hier, bezogen auf die Ausgangsfrage, überhaupt die Nutzung des Typ char unnötig, nur um ab einer bestimmten Stelle etwas mitteles einer Messagebox auszugeben.</p>
<blockquote>
<p>Weitere Quizfrage: ist strcpy Teil der VCL?</p>
</blockquote>
<p>Wenn du hier Moderator bist, solltest du das eigentlich Wissen. <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/835477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835477</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 07:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 08:42:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>@Christian211<br />
Wenn du ein wenig nachdenkst, wirst du darauf kommen, dass sowohl strcpy als auch strncpy Teil der VCL sind und du deshalb keine zusätzlichen Header einbinden musst.<br />
Überlegung:<br />
StrLCopy ist Teil der VCL<br />
StrLCopy kapselt strcpy<br />
also muss die string.h (wo strcpy drin ist) in die VCL eingebunden werden<br />
also ist strcpy Teil der VCL</p>
<p>[edit]<br />
Kommando zurück.<br />
strcpy ist zwar Teil der VCL (das stimmt), StrLCopy kapselt diese Funktion aber nicht. Ich hab mal den Quellcode von StrLCopy angeschaut und der ist reinstes Assembler. Die Wahrheit liegt also mehr in der Mitte.<br />
[\edit]</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835519</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 21 Jul 2005 08:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 08:40:42 GMT]]></title><description><![CDATA[<p>Christian211 schrieb:</p>
<blockquote>
<blockquote>
<p>werte ich als Einsicht, das dein Argument nichtig war. Korrekt?</p>
</blockquote>
<p>- als Entwickler ist man schreibfaul</p>
</blockquote>
<p>Dann bist du auch einer der Entwickler die das Einsparpotential in der Zeit am falschen Ort zu finden glauben.</p>
<p>Christian211 schrieb:</p>
<blockquote>
<p>- als Anfänger weiss man nicht, dass man eine Header einbinden muss</p>
</blockquote>
<p>Dann lernt man als Anfänger was dazu. Es ist kein Argument, einfach einen Header der alle anderen Header includiert zu propagieren. Das ist absolut am Sinn vorbei und schafft unnötige Abhängigkeiten.</p>
<p>Christian211 schrieb:</p>
<blockquote>
<p>- als Anfänger weiss man of nicht den Namen der Header zum einbinden (die F1 Taste klemmt ja öfters, und einige Compiler werden offenbar ohne Hilfe ausgeliefert)</p>
</blockquote>
<p>Dann lernt der Anfänger hald, die Taste F1 zu reparieren und entsprechende Dokumentation zu besorgen, denn es wird nicht das letzte mal sein, das die Dokumentation benötigt werden wird.</p>
<p>Christian211 schrieb:</p>
<blockquote>
<blockquote>
<p>Keine Ahnung. Worauf willst du hinaus?</p>
</blockquote>
<p>Was in Gottes Namen hat die Kapselung einer Funktion damit zu tun, ob man sie benutzen sollte oder nicht? Die gnaze VCL kapselt die Win 32 API. Diese Funktionen sind bloß wenig bekannt. Schließlich war hier, bezogen auf die Ausgangsfrage, überhaupt die Nutzung des Typ char unnötig, nur um ab einer bestimmten Stelle etwas mitteles einer Messagebox auszugeben.</p>
</blockquote>
<p>Nur in sehr eingeschränktem Rahmen relevant. Denn so gesehen benötigst du nicht mal StrLCopy, denn AnsiString verfügt ja über die diversen Operatoren die die Verwendung von String-Cat oder String-Copy-Funktionen völlig unnötig machen.</p>
<p>Christian211 schrieb:</p>
<blockquote>
<blockquote>
<p>Weitere Quizfrage: ist strcpy Teil der VCL?</p>
</blockquote>
<p>Wenn du hier Moderator bist, solltest du das eigentlich Wissen. <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>
</blockquote>
<p>... Offensichtlich hast du nicht gesehen, was ich mit dieser Frage bezwecken wollte. Man msus hier, im VCL Forum nicht alles mit Gewalt auf die VCL umbiegen. Es wurde hier ein nicht glücklich gewähltes Ansi C Element verwendet. Also ist es nur angemessen, wenn ich ein besseres Element aufzeige, das ebenfalls aus der selben Bibliothek stammt wie das unglücklich gewählte. Damit entkräftet man auch gleich einige &quot;aber&quot;-Argumentationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835524</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 08:40:42 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 09:11:19 GMT]]></title><description><![CDATA[<p>Interssant jedenfalls, was so ein kleiner Hinweis auf eine VCL Funktion auslösen kann</p>
<blockquote>
<p>Einsparpotential in der Zeit am falschen Ort zu finden glauben</p>
</blockquote>
<p>Danke geht seit 26 Jahren sehr gut <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a><br />
strncpy war hier auch nur ein Beispiel. Es gibt weitere Standardfunktioen, für die es entsprechende Funktionen in der VCL gibt und für die dann *.h rein muss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835549</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 09:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 11:11:49 GMT]]></title><description><![CDATA[<p>Christian211 schrieb:</p>
<blockquote>
<blockquote>
<p>Einsparpotential in der Zeit am falschen Ort zu finden glauben</p>
</blockquote>
<p>Danke geht seit 26 Jahren sehr gut <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>Stimmt... denn Tipparbeit ist ja auch bei der Softwarentwicklung der absolute Zeitfresser... egal. Ist ein anderes Thema.</p>
<p>Was mich viel eher interessieren würde, ist die Tatsache, was du eigentlich für ein Problem mit dem Includieren von headerfiles hast:</p>
<p>Christian211 schrieb:</p>
<blockquote>
<p>Kann ich nicht nachvollziehen. Für strncpy und weitere sind Headerdateien einzubinden für die entsprechende VCL Funktion nicht.</p>
</blockquote>
<p>Es ist doch genau der tiefere Sinn, das man nur headerfiles included die man auch benötigt. Oder gehörst du auch zu denen die ein Headerfile &quot;includeAll.h&quot; machen, wo schlussendlich eine Liste mit #include für jedes erdenkliche Headerfile steht, womöglihc noch einige using-Anweisungen, und dann das einfach in alle Module &quot;includeall.h&quot; includen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835633</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 11:11:49 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 11:16:28 GMT]]></title><description><![CDATA[<p>KlausB schrieb:</p>
<blockquote>
<p>wo ist denn da das &quot;new&quot; und das &quot;delete&quot;<br />
desweiteren ist das sehr gefaehrlich den char* auf 30 Zeichen festzulegen<br />
was passiert denn wenn du mehr als 30 Zeichen da reinschreibst</p>
</blockquote>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
	char* Message;
	if(OpenDialog1-&gt;Execute())
     {
	     Message = new char[OpenDialog1-&gt;FileName.Length()+20];
          Message = &quot;File-&gt;&quot;;
     	strcpy(Message+6,OpenDialog1-&gt;FileName.c_str());
     	Application-&gt;MessageBox(Message,&quot;File&quot;,MB_OK);
	     delete Message;
     }

}
</code></pre>
<p>Gibt aber folgendes Problem, im Caption der MessageBox steht nicht File sondern<br />
ein Rest von Message. Habe mir Message genauer angeschaut, ist aber alles<br />
korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835635</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Thu, 21 Jul 2005 11:16:28 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 11:26:30 GMT]]></title><description><![CDATA[<p>Wie wäre es mit</p>
<pre><code class="language-cpp">String Message;
if(OpenDialog1-&gt;Execute())
   {
   Message=&quot;File-&gt;&quot;+OpenDialog1-&gt;FileName;
   Application-&gt;MessageBox(Message.c_str(),&quot;File&quot;,MB_OK);
   }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/835646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835646</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 11:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 11:28:50 GMT]]></title><description><![CDATA[<p>Nein, ich includiere auch nur was nötig ist.</p>
<p>Was hast du gegen eine kleine harmlose VCL Funktion?</p>
<p>Richtig für strxxx ist keine Header einzubinden. Irrtum von mir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835650</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 11:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 12:32:06 GMT]]></title><description><![CDATA[<p>Simmt, habe mal wieder nach dem Motto warum Einfach wenn es auch Umständlich<br />
geht gehandelt.</p>
<p>Danke für die Hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835707</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Thu, 21 Jul 2005 12:32:06 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 12:41:07 GMT]]></title><description><![CDATA[<p>hermes schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Message = new char[OpenDialog1-&gt;FileName.Length()+20];
          Message = &quot;File-&gt;&quot;;
     	strcpy(Message+6,OpenDialog1-&gt;FileName.c_str());
     	Application-&gt;MessageBox(Message,&quot;File&quot;,MB_OK);
	     delete Message;
</code></pre>
</blockquote>
<p>Nanana, zu einem new [] gehört auch ein delete []...</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/618">@Christian</a>: Gar nichts. Hab nur ein Problem mit der Argumentation &quot;da muss ich extra noch ne Headerfile einbinden&quot;. Was glaubst du was VCL.h anderes macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835710</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 21 Jul 2005 12:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 12:52:05 GMT]]></title><description><![CDATA[<p>Dann sollte man diese Diskussion beenden und jede nimmt das, was gerade am besten passt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835714</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 21 Jul 2005 12:52:05 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 13:00:43 GMT]]></title><description><![CDATA[<p>Ups, delete[].</p>
<pre><code class="language-cpp">Message = new char[OpenDialog1-&gt;FileName.Length()+20];
         Message = &quot;File-&gt;&quot;;
         strcpy(Message+6,OpenDialog1-&gt;FileName.c_str());
         Application-&gt;MessageBox(Message,&quot;File&quot;,MB_OK);
         delete[] Message;
</code></pre>
<p>Ich weiss allerdings immer noch nicht, warum im Caption von der MessageBox<br />
nicht File sondern Reste von Message steht.<br />
Message sieht eigentlich korrekt aus.<br />
Was passiert eigentlich bei delete ohne [], wird da nur die Speicherstelle<br />
für den Pointer freigegeben, der angefordert Speicher aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835722</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Thu, 21 Jul 2005 13:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to AnsiString an ein char Array anhängen on Thu, 21 Jul 2005 13:10:19 GMT]]></title><description><![CDATA[<p>Welches delete du hier verwendest ist sowieso egal da du bei</p>
<pre><code class="language-cpp">Message = &quot;File-&gt;&quot;;
</code></pre>
<p>den vorher geholten Pointer ja wieder überschreibst.<br />
also lieber</p>
<pre><code class="language-cpp">strncpy(Message,&quot;File-&gt;&quot;,OpenDialog1-&gt;FileName.Length()+19);
</code></pre>
<p>und dann</p>
<pre><code class="language-cpp">strncat(Message,OpenDialog1-&gt;FileName.c_str(),,OpenDialog1-&gt;FileName.Length()+19);
</code></pre>
<p>Ich würde der Übersichtlichkeit halber die maximale Größe deines Arrays vorher in eine Variable schreiben.<br />
Noch besser ist aber die AnsiString-Variante von Christian.</p>
<p>Ein einfaches delete würde hier den Speicher des ersten Elementes deines Arrays freigeben.<br />
also immer:<br />
bei new []<br />
immer delete[]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/835726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/835726</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 21 Jul 2005 13:10:19 GMT</pubDate></item></channel></rss>