<?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[dynamisches array will nicht :(]]></title><description><![CDATA[<p>hallo, prinzipiell will ich eine id3 - lese - Klasse programmieren soweit so gut.<br />
(achja ID3tags sind die dinger in MP3s in denen die Informationen über das Lied stecken)</p>
<p>ID3v2 Tags sind unterschiedlich lang und man kann sich aus dem 10 byte großen Header die gesamt länge ausrechenen. Das funzt schon wunderbar. Nun will ich das file nocheinmal öffnen und anhand der ermittelten Länge den gesamten Tag einlesen um ihn dann weiterverarbeiten zu können --&gt; das ganze über</p>
<p>char*buffer = new char[lenght] .. seht selbst: (ahja ich verwende Borland Studio 2006)</p>
<pre><code>[cpp]
        char tagfound[3], header[10];  //buffer für header und TAGgefunden in dem dann stehen sollte &quot;IDE&quot;

        TFileStream *MP3; // hm

		MP3 = new TFileStream(path,fmOpenRead);
		MP3-&gt;Read(header,sizeof(header));

	memcpy(tagfound,header,3);

	if(tagfound[0] == 0x49 &amp;&amp; tagfound[1] == 0x44 &amp;&amp; tagfound[2] == 0x33)  //enter if &quot;ID3&quot; found @ beginning
	{
		Tag-&gt;TagFound = true;    //Tag ist ein Struct zum speichern der Informationen

		//version
		AnsiString version = &quot;ID3v2.&quot;;
		version = version + (int)header[3] + &quot;.&quot; +(int)header[4];
		Tag-&gt;ID3version = version;
		//~version

		//size
		int lenght;

		lenght = lenght | header[6];        // calculating size
		lenght = lenght &lt;&lt; 7;
		lenght = lenght | header[7];
		lenght = lenght &lt;&lt; 7;
		lenght = lenght | header[8];
		lenght = lenght &lt;&lt; 7;
		lenght = lenght | header[9];

		if(header[5] &amp; 0x16)                // is footer present recalc size
			lenght = lenght + 20;
		else
			lenght = lenght + 10;

			// TagSize/Lenght avaliable 

	:arrow:char *buffer = new char[lenght];            
		MP3-&gt;Seek((__int64)0,soBeginning);
		MP3-&gt;ReadBuffer(buffer,sizeof(buffer));

		delete []buffer;
		buffer = NULL;

		delete MP3;

[/cpp]
</code></pre>
<p>beim blauen pfeil passiert das problem und zwar übergebe ich schön braf die länge von zB 1193 bytes nur nach dem einlesen<br />
hab ich im buffer höchstens 5 bytes drin stehen .. verwende ich einen hardcoded static array buffer gehts wunderbar,<br />
es nützt auch nichts wenn ichs dynamisch hardcode (char *buffer = new char[1193];)</p>
<p>das steht drinnen ... buffer: char * :0012F494 : :00A093FC &quot;<strong>ID3\x03</strong>&quot;</p>
<p>laut hex editor steht das drin (ersten 10 byte)</p>
<p>00000000:49 44 33 03 00 00 00 00 09 1f ---&gt; ID3.......</p>
<p>für jede hilfe dankbar</p>
<p>birdspider</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159939/dynamisches-array-will-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 04:43:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159939.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Sep 2006 10:45:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamisches array will nicht :( on Wed, 20 Sep 2006 10:45:09 GMT]]></title><description><![CDATA[<p>hallo, prinzipiell will ich eine id3 - lese - Klasse programmieren soweit so gut.<br />
(achja ID3tags sind die dinger in MP3s in denen die Informationen über das Lied stecken)</p>
<p>ID3v2 Tags sind unterschiedlich lang und man kann sich aus dem 10 byte großen Header die gesamt länge ausrechenen. Das funzt schon wunderbar. Nun will ich das file nocheinmal öffnen und anhand der ermittelten Länge den gesamten Tag einlesen um ihn dann weiterverarbeiten zu können --&gt; das ganze über</p>
<p>char*buffer = new char[lenght] .. seht selbst: (ahja ich verwende Borland Studio 2006)</p>
<pre><code>[cpp]
        char tagfound[3], header[10];  //buffer für header und TAGgefunden in dem dann stehen sollte &quot;IDE&quot;

        TFileStream *MP3; // hm

		MP3 = new TFileStream(path,fmOpenRead);
		MP3-&gt;Read(header,sizeof(header));

	memcpy(tagfound,header,3);

	if(tagfound[0] == 0x49 &amp;&amp; tagfound[1] == 0x44 &amp;&amp; tagfound[2] == 0x33)  //enter if &quot;ID3&quot; found @ beginning
	{
		Tag-&gt;TagFound = true;    //Tag ist ein Struct zum speichern der Informationen

		//version
		AnsiString version = &quot;ID3v2.&quot;;
		version = version + (int)header[3] + &quot;.&quot; +(int)header[4];
		Tag-&gt;ID3version = version;
		//~version

		//size
		int lenght;

		lenght = lenght | header[6];        // calculating size
		lenght = lenght &lt;&lt; 7;
		lenght = lenght | header[7];
		lenght = lenght &lt;&lt; 7;
		lenght = lenght | header[8];
		lenght = lenght &lt;&lt; 7;
		lenght = lenght | header[9];

		if(header[5] &amp; 0x16)                // is footer present recalc size
			lenght = lenght + 20;
		else
			lenght = lenght + 10;

			// TagSize/Lenght avaliable 

	:arrow:char *buffer = new char[lenght];            
		MP3-&gt;Seek((__int64)0,soBeginning);
		MP3-&gt;ReadBuffer(buffer,sizeof(buffer));

		delete []buffer;
		buffer = NULL;

		delete MP3;

[/cpp]
</code></pre>
<p>beim blauen pfeil passiert das problem und zwar übergebe ich schön braf die länge von zB 1193 bytes nur nach dem einlesen<br />
hab ich im buffer höchstens 5 bytes drin stehen .. verwende ich einen hardcoded static array buffer gehts wunderbar,<br />
es nützt auch nichts wenn ichs dynamisch hardcode (char *buffer = new char[1193];)</p>
<p>das steht drinnen ... buffer: char * :0012F494 : :00A093FC &quot;<strong>ID3\x03</strong>&quot;</p>
<p>laut hex editor steht das drin (ersten 10 byte)</p>
<p>00000000:49 44 33 03 00 00 00 00 09 1f ---&gt; ID3.......</p>
<p>für jede hilfe dankbar</p>
<p>birdspider</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1140995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1140995</guid><dc:creator><![CDATA[birdspider]]></dc:creator><pubDate>Wed, 20 Sep 2006 10:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Wed, 20 Sep 2006 10:54:44 GMT]]></title><description><![CDATA[<p>sizeof(buffer) gibt Dir die Größe des Zeigers aus (bei 32Bit Systemem 4 Byte).<br />
ändere also:</p>
<pre><code class="language-cpp">MP3-&gt;ReadBuffer(buffer,sizeof(buffer));
</code></pre>
<p>zu:</p>
<pre><code class="language-cpp">MP3-&gt;ReadBuffer(buffer,lenght);
</code></pre>
<p>btw. lenght wird length geschrieben <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/1141002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141002</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 20 Sep 2006 10:54:44 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Wed, 20 Sep 2006 11:02:56 GMT]]></title><description><![CDATA[<p>mal davon abgesehen dass du recht hast <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="😉"
    /> und das sizeof() ein rest vom herumexperimentieren ist hab ich<br />
folgendes schon probiert:</p>
<pre><code>[cpp]MP3-&gt;ReadBuffer(buffer,sizeof(buffer)); 

MP3-&gt;ReadBuffer(buffer,lenght); 	

MP3-&gt;ReadBuffer(buffer,1193); 		[/cpp]
</code></pre>
<p>leider ohne erfolg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141005</guid><dc:creator><![CDATA[birdspider]]></dc:creator><pubDate>Wed, 20 Sep 2006 11:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Wed, 20 Sep 2006 11:10:23 GMT]]></title><description><![CDATA[<p>Da ich kein Borland benutze, kenn ich mich in der Doku nicht aus.<br />
Schau mal bei TFileStream nach, ob die Datei im Binär-Modus geöffnet wird etc.<br />
Vielleicht findest Du da was, das helfen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141012</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 20 Sep 2006 11:10:23 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Wed, 20 Sep 2006 11:12:12 GMT]]></title><description><![CDATA[<p>Es steht vermutlich genau das drin was der Hex-Editor auch anzeigt, wenn die Länge stimmt. Wenn Du das im Debugger aber ausgibst, wird es als C-String interpretiert, und diese haben die Eigenart beim ersten Nullbyte per Definition zuende zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141013</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 20 Sep 2006 11:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Fri, 22 Sep 2006 16:43:10 GMT]]></title><description><![CDATA[<p>jup danke an alle antwortenden</p>
<p>LordJaxom hat recht es geht wirklich nur das borland ab dem ersten 0x00 nichts mehr anzeigt</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142703</guid><dc:creator><![CDATA[birdspider]]></dc:creator><pubDate>Fri, 22 Sep 2006 16:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Fri, 22 Sep 2006 16:48:03 GMT]]></title><description><![CDATA[<p>Du kannst beim Debugger des BDS einstellen als was du es ausgegeben haben willst. Bei einem char* Array ist die Vorgabe natürlich String und somit wird beim ersten 0-Byte abgeschnitten. Du kannst das aber auch auf Hex oder Speicherauszug stellen. Dann müsste alles angezeigt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142707</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 22 Sep 2006 16:48:03 GMT</pubDate></item><item><title><![CDATA[Reply to dynamisches array will nicht :( on Fri, 22 Sep 2006 18:02:44 GMT]]></title><description><![CDATA[<p>HI,</p>
<p>eigentlich böses off topic, aber ich muß es doch mal loswerden:</p>
<p>birdspider schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">lenght
</code></pre>
<p>...</p>
</blockquote>
<p>Stört den Compiler nicht wirklich, macht aber die Suche später mal richtig schwer.....und wird für Verwirrung sorgen, wenn irgendwo mal &quot;length&quot; auftaucht...<br />
Und wird auch nicht besser, wenn man es 1000mal schreibt. <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142764</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 22 Sep 2006 18:02:44 GMT</pubDate></item></channel></rss>