<?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[struct Deklaration für ein Dateiformat]]></title><description><![CDATA[<p>ich habe folgenden Pseudocode für ein Dateiformat</p>
<pre><code>short stringLength;
char string [stringLength];
short effectCount;
repeat effectCount
  short effectID;
  short effectData;
end repeat
</code></pre>
<p>ich denke es ist klar wie die Datei aussieht. um nun Daten einfach auslesen und speichern zu können würde ich mir gerne ein entsprechendes struct deklarieren. Das Problem ist aber, das aber die Konstanten stringLength und effectCount nicht bekannt sind. Ich kann also nicht sowas wie</p>
<pre><code class="language-cpp">struct {
  short stringLength;
  char str[stringLength];
  short effectCount;
  struct {
    short effectID;
    short effectData;
  } effects [effectCount];
} foo;
</code></pre>
<p>in meinen Header schreiben. Wie würde man soetwas lösen bzw programmtechnisch abbilden um einfach mit einer solchen Datei arbeiten zu können?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212076/struct-deklaration-für-ein-dateiformat</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 15:55:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212076.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 May 2008 06:03:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct Deklaration für ein Dateiformat on Thu, 01 May 2008 06:03:17 GMT]]></title><description><![CDATA[<p>ich habe folgenden Pseudocode für ein Dateiformat</p>
<pre><code>short stringLength;
char string [stringLength];
short effectCount;
repeat effectCount
  short effectID;
  short effectData;
end repeat
</code></pre>
<p>ich denke es ist klar wie die Datei aussieht. um nun Daten einfach auslesen und speichern zu können würde ich mir gerne ein entsprechendes struct deklarieren. Das Problem ist aber, das aber die Konstanten stringLength und effectCount nicht bekannt sind. Ich kann also nicht sowas wie</p>
<pre><code class="language-cpp">struct {
  short stringLength;
  char str[stringLength];
  short effectCount;
  struct {
    short effectID;
    short effectData;
  } effects [effectCount];
} foo;
</code></pre>
<p>in meinen Header schreiben. Wie würde man soetwas lösen bzw programmtechnisch abbilden um einfach mit einer solchen Datei arbeiten zu können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501516</guid><dc:creator><![CDATA[Morle]]></dc:creator><pubDate>Thu, 01 May 2008 06:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to struct Deklaration für ein Dateiformat on Thu, 01 May 2008 09:03:30 GMT]]></title><description><![CDATA[<p>Hi !</p>
<p>Das ganze mal ein bisschen anders aufgeschrieben:</p>
<pre><code class="language-cpp">struct Effects
{
	short effectID;
	short effectData;
};

struct Data
{
	short stringLength; 
	char* str;
	short effectCount;
	struct Effects* effects;
};
</code></pre>
<p>Ok, Datei öffnen, stringLength einlesen, Speicherplatz stringLength+1 für str reservieren, String einlesen,<br />
effectCount einlesen, Speicherplatz effectCount * sizeof(struct Effects) reservieren, Struktur(en) einlesen.</p>
<p>Steht das ganze wiederholt, mehrmals in einer Datei drin, so brauchst du ein Data-Array, oder verkettest die Strukturen in einer Liste:</p>
<pre><code class="language-cpp">struct Data
{
	short stringLength; 
	char* str;
	short effectCount;
	struct Effects* effects;
    struct Data* next;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1501539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501539</guid><dc:creator><![CDATA[Big Brother]]></dc:creator><pubDate>Thu, 01 May 2008 09:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to struct Deklaration für ein Dateiformat on Thu, 01 May 2008 09:35:36 GMT]]></title><description><![CDATA[<p>Danke Dir <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="🙂"
    /> So funktioniert es natürlich (und genaso habe ich es im Moment auch). Das Problem ist nur, das das ziemlich langsam ist, weil man immer nur jeweils ein paar Bytes von der Datei liest. Bevor ich das jetzt weiter verfolge und das optimiere (z.B. größere Teile der Datei einlesen,diese dann parsen und memcpy in den speicher von new reinkopieren) erstmal meine Träume:</p>
<p>Ich hatte es mir eigentlich so ausgemalt, daß ich einfach die Datei komplett in einem Rutsch in einen Buffer lade (da ich eh die komplette Datei brauche) und dann einfach nur noch eine Reihe von Pointern auf diese noch zu definierenden Structs habe, die auf die entsprechende Stelle im Buffer zeigen.<br />
So könnte ich mir dann das ganze speicheranfordern mit new sparen und könnte auf den Inhalt der Datei bequem über die structs zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501545</guid><dc:creator><![CDATA[Morle]]></dc:creator><pubDate>Thu, 01 May 2008 09:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to struct Deklaration für ein Dateiformat on Thu, 01 May 2008 10:23:23 GMT]]></title><description><![CDATA[<p>Der Zugriff auf diese Weise wird langsamer, als ein Zugriff über einen Data-Array-Index, weil dafür mehr Maschinenbefehle nötig sind.<br />
Mindestens ein mov und ein add, der den Offset auf die erste Strukturposition draufaddiert, pro Zugriff wohlgemerkt. Bei mehreren Tausend Datensätzen, werden es mehrere Tausend movs/adds zusätzlich.<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/1501559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501559</guid><dc:creator><![CDATA[Big Brother]]></dc:creator><pubDate>Thu, 01 May 2008 10:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to struct Deklaration für ein Dateiformat on Thu, 01 May 2008 11:19:36 GMT]]></title><description><![CDATA[<p>hm interessant. von der seite hab ich das noch gar nicht betrachtet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501573</guid><dc:creator><![CDATA[Morle]]></dc:creator><pubDate>Thu, 01 May 2008 11:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to struct Deklaration für ein Dateiformat on Thu, 01 May 2008 12:03:47 GMT]]></title><description><![CDATA[<p>Ja, einfach ein kleines Vergleichsbeispiel schreiben und das Disassembly angucken^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1501596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1501596</guid><dc:creator><![CDATA[Big Brother]]></dc:creator><pubDate>Thu, 01 May 2008 12:03:47 GMT</pubDate></item></channel></rss>