<?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[Ersatz für Datenstruktur &#x27;Vector&#x27;]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich nutze zur Zeit die Datenstruktur 'Vector' um Datenpakete unterschiedlicher Länge zwischen einer Anwendung und einer DLL auszutauschen.<br />
Ich würde allerdings gern auf den Vector verzichten und eine Lösung in 'reinem C'<br />
bevorzugen.<br />
Beim Auslesen eines Datenpakets aus der DLL hab ich dann allerdings das Problem, dass ich vorher nicht weiss wieviel Speicher ich für dieses Datenpaket benötige.</p>
<p>Hat da vielleicht jemand einen Vorschlag wie ich das lösen könnte?</p>
<p>Danke<br />
sid</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223394/ersatz-für-datenstruktur-vector</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 07:11:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223394.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Sep 2008 13:35:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ersatz für Datenstruktur &#x27;Vector&#x27; on Thu, 25 Sep 2008 13:35:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich nutze zur Zeit die Datenstruktur 'Vector' um Datenpakete unterschiedlicher Länge zwischen einer Anwendung und einer DLL auszutauschen.<br />
Ich würde allerdings gern auf den Vector verzichten und eine Lösung in 'reinem C'<br />
bevorzugen.<br />
Beim Auslesen eines Datenpakets aus der DLL hab ich dann allerdings das Problem, dass ich vorher nicht weiss wieviel Speicher ich für dieses Datenpaket benötige.</p>
<p>Hat da vielleicht jemand einen Vorschlag wie ich das lösen könnte?</p>
<p>Danke<br />
sid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587915</guid><dc:creator><![CDATA[sid_vicious]]></dc:creator><pubDate>Thu, 25 Sep 2008 13:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ersatz für Datenstruktur &#x27;Vector&#x27; on Thu, 25 Sep 2008 16:08:07 GMT]]></title><description><![CDATA[<p>verstehe nicht was das jetzt mit dll zu tun haben soll. du kannst funktionen in einer dll genauso aufrufen wie andere auch und pointer etc. über- und zurückgeben <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="😕"
    /> achte nur auf speicher den die dll alloziert am besten auch von der dll wieder freigeben zu lassen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587998</guid><dc:creator><![CDATA[ascda]]></dc:creator><pubDate>Thu, 25 Sep 2008 16:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to Ersatz für Datenstruktur &#x27;Vector&#x27; on Fri, 26 Sep 2008 06:55:22 GMT]]></title><description><![CDATA[<p>Ok ich versuchs nochmal zu erklären. Ich habe in meiner DLL eine Funktion read(). Dieser Funktion wird ein Pointer auf einen Vector übergeben.<br />
Der Vector wird vor dem Lesen in der Hauptanwendung erstellt. Die DLL 'füllt' ihn dann über den Pointer mit n-Bytes.</p>
<p>Nun würde ich statt des Vectors gern eine 'reine C' Datenstruktur verwenden. Auch hier könnte ich ja zB.: einen Pointer auf ein Array übergeben. Das Problem: ich weiss vorher nicht wieviel Speicher ich für das Array benötige.</p>
<p>Ich würde nur ungern malloc benutzen oder eine 2. Funktion einführen, um die Größe des Datenpakets zu ermitteln...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588238</guid><dc:creator><![CDATA[sid_vicious]]></dc:creator><pubDate>Fri, 26 Sep 2008 06:55:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ersatz für Datenstruktur &#x27;Vector&#x27; on Fri, 26 Sep 2008 07:05:32 GMT]]></title><description><![CDATA[<p>Du kannst eine Funktion anbieten, die mitteilt, wieviele Bytes verfügbar sind.</p>
<p>Oder du kannst das in etwa so machen:</p>
<p>length: gibt die buffer grösse an.<br />
return value: gibt an wieviele bytes effektiv in buffer geschrieben wurden (nie mehr als length)</p>
<pre><code class="language-cpp">long getData(unsigned char* buffer, long length)
{
   // .. 
}
</code></pre>
<p>Und das rufst Du solange auf, bis keine Daten mehr verfügbar sind.<br />
(so ähnlich wie recv(..))</p>
<p>Oder Du könntest den Buffer erzeugen und zerstören in der DLL:</p>
<pre><code class="language-cpp">// buffer und length sind output parameter...
void aquireData(unsigned char** buffer, long* length)
{
   *buffer = new ...
   *length = ...
   // ...
}

void releaseData(unsigned char** buffer)
{
   delete *buffer;
   *buffer = 0;
}
</code></pre>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588245</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 26 Sep 2008 07:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ersatz für Datenstruktur &#x27;Vector&#x27; on Fri, 26 Sep 2008 08:51:30 GMT]]></title><description><![CDATA[<p>Viele Windows API Funktionen haben auch die Möglichkeit mit der Übergabe eines NULL Zeigers zu ermitteln wieviel Speicher die Funktion anbieten muss damit ale Datn hineinpassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588315</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 26 Sep 2008 08:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to Ersatz für Datenstruktur &#x27;Vector&#x27; on Mon, 29 Sep 2008 06:34:20 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe.<br />
Ich werd mal die Variante mit dem Null-Zeiger probieren. Erscheint mir jetzt erstmal die einfachste und effektivste Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1590036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1590036</guid><dc:creator><![CDATA[sid_vicious]]></dc:creator><pubDate>Mon, 29 Sep 2008 06:34:20 GMT</pubDate></item></channel></rss>