<?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[Problem mit Patcher]]></title><description><![CDATA[<p>grüße<br />
also ich hab mir für einen custom patcher(für ein game), ein open source patcher geholt, diesen hab ich jetzt auch schon etwas modifiziert.<br />
jedoch möcht ich es noch weitermachen, da ich einen brauche der mehr als eine datei patchen kann, dieser kann jeweils nur eine datei.</p>
<p>ich habe mir mal die mühe gemacht und den code hier ausgestellt:<br />
<a href="http://bdw-server.servebbs.com/Cplusplus" rel="nofollow">http://bdw-server.servebbs.com/Cplusplus</a></p>
<p>nun komme ich zu den zeilen und stellen wo ich probleme habe und nicht weiterkomme und auf hilfe hoffe.</p>
<p>main.cpp:<br />
Header(Zeile 30-33)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
using namespace std;
struct inisetting settings;
</code></pre>
<p>Problemstelle1 (Zeile 217-225)</p>
<pre><code class="language-cpp">/*grf_number und patch_siteX (X = zahl) werden in einer .ini datei deklariert*/
	if(GetPrivateProfileString(&quot;server&quot;, &quot;grf_number&quot;, NULL, settings.szGRFNumber, sizeof(settings.szGRFNumber) / sizeof(settings.szGRFNumber[0]), INIFILE) &lt;= 0)
	throw &quot;Invalid key in NeonCube.ini: grf_number&quot;;

	int GRFNumbers = 0;
	std::stringstream str;
	str &lt;&lt; GRFNumbers;
while(str.str().c_str() == settings.szGRFNumber){
	++GRFNumbers;
	str &lt;&lt; &quot;patch_site&quot; &lt;&lt; GRFNumbers;
	if(GetPrivateProfileString(&quot;server&quot;, str.str().c_str(), NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)/*str.str().c_str() hat den wert patch_site1 (bzw die jeweile Zahl von der Var GRFNumbers)*/
	throw &quot;Invalid key in NeonCube.ini: patch_site&quot;; /*statt patch_site soll hier patch_site1 (bzw die jeweilige Zahl von der Var GRFNumbers stehen)*/
}
</code></pre>
<p>Problemstelle2 (Zeile 1068-1742)<br />
(ich poste nicht den ganzen code, nur kleine auszüge)</p>
<pre><code class="language-cpp">.../*Zeile 1094*/
	g_hConnection = InternetConnectA(g_hOpen,
		settings.szPatchURL,
		settings.nPatchPort,
		NULL, NULL,
		INTERNET_SERVICE_HTTP,
		0, (DWORD)NULL
		);
...
</code></pre>
<p>so nun zu meinem problem:</p>
<p>ich weiß nicht wie ich es schaffe das er bei Problemstelle1 den/die wert/e von &quot;str.str().c_str()&quot; in das array &quot;settings.szPatchURL&quot; bringt und wie ich bei &quot;throw&quot; den &quot;str.str().c_str()&quot; ausgeben kann anstelle von &quot;patch_site&quot;.</p>
<p>ebenfalls weiß ich nicht wie ich es schaffe das er die gesamte Problemstelle2 solange wiederholt wie es werte in der &quot;settings.szPatchURL&quot; gibt. sozusagen wenn bei Problemstelle1 in das array &quot;settings.szPatchURL&quot; die werte &quot;<a href="http://www.das-example.de" rel="nofollow">www.das-example.de</a>&quot; und &quot;<a href="http://www.das-example2.de" rel="nofollow">www.das-example2.de</a>&quot; geschrieben werden, das er bei Problemstelle2 per (z.b.) &quot;while&quot; solange alles abarbeitet, das er erst mit &quot;settings.szPatchURL[0]&quot; und dann nochmal mit &quot;settings.szPatchurl[1]&quot; durchläuft und die datei sozusagen zweimal patcht. hier hab ich aber auch noch keinen lösungsansatz, bitte helft mir dabei.</p>
<p>ich hoffe ihr habt alles verstanden, falls nicht bitte fragt nochmals nach.</p>
<p>ich bedanke mich schonmal für hilfe aller art.</p>
<p>mfg<br />
Warkiller102</p>
<p>da der code nicht von mir kommt aber open source ist:<br />
Copyright <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00a9.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--copyright"
      title=":copyright:"
      alt="©"
    /> 2005,2006,2007 NeonCube Networks Ltd. <a href="http://patch.neon-cube.net/" rel="nofollow">http://patch.neon-cube.net/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207488/problem-mit-patcher</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 04:06:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207488.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Mar 2008 12:10:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Patcher on Sat, 08 Mar 2008 12:10:17 GMT]]></title><description><![CDATA[<p>grüße<br />
also ich hab mir für einen custom patcher(für ein game), ein open source patcher geholt, diesen hab ich jetzt auch schon etwas modifiziert.<br />
jedoch möcht ich es noch weitermachen, da ich einen brauche der mehr als eine datei patchen kann, dieser kann jeweils nur eine datei.</p>
<p>ich habe mir mal die mühe gemacht und den code hier ausgestellt:<br />
<a href="http://bdw-server.servebbs.com/Cplusplus" rel="nofollow">http://bdw-server.servebbs.com/Cplusplus</a></p>
<p>nun komme ich zu den zeilen und stellen wo ich probleme habe und nicht weiterkomme und auf hilfe hoffe.</p>
<p>main.cpp:<br />
Header(Zeile 30-33)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
using namespace std;
struct inisetting settings;
</code></pre>
<p>Problemstelle1 (Zeile 217-225)</p>
<pre><code class="language-cpp">/*grf_number und patch_siteX (X = zahl) werden in einer .ini datei deklariert*/
	if(GetPrivateProfileString(&quot;server&quot;, &quot;grf_number&quot;, NULL, settings.szGRFNumber, sizeof(settings.szGRFNumber) / sizeof(settings.szGRFNumber[0]), INIFILE) &lt;= 0)
	throw &quot;Invalid key in NeonCube.ini: grf_number&quot;;

	int GRFNumbers = 0;
	std::stringstream str;
	str &lt;&lt; GRFNumbers;
while(str.str().c_str() == settings.szGRFNumber){
	++GRFNumbers;
	str &lt;&lt; &quot;patch_site&quot; &lt;&lt; GRFNumbers;
	if(GetPrivateProfileString(&quot;server&quot;, str.str().c_str(), NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)/*str.str().c_str() hat den wert patch_site1 (bzw die jeweile Zahl von der Var GRFNumbers)*/
	throw &quot;Invalid key in NeonCube.ini: patch_site&quot;; /*statt patch_site soll hier patch_site1 (bzw die jeweilige Zahl von der Var GRFNumbers stehen)*/
}
</code></pre>
<p>Problemstelle2 (Zeile 1068-1742)<br />
(ich poste nicht den ganzen code, nur kleine auszüge)</p>
<pre><code class="language-cpp">.../*Zeile 1094*/
	g_hConnection = InternetConnectA(g_hOpen,
		settings.szPatchURL,
		settings.nPatchPort,
		NULL, NULL,
		INTERNET_SERVICE_HTTP,
		0, (DWORD)NULL
		);
...
</code></pre>
<p>so nun zu meinem problem:</p>
<p>ich weiß nicht wie ich es schaffe das er bei Problemstelle1 den/die wert/e von &quot;str.str().c_str()&quot; in das array &quot;settings.szPatchURL&quot; bringt und wie ich bei &quot;throw&quot; den &quot;str.str().c_str()&quot; ausgeben kann anstelle von &quot;patch_site&quot;.</p>
<p>ebenfalls weiß ich nicht wie ich es schaffe das er die gesamte Problemstelle2 solange wiederholt wie es werte in der &quot;settings.szPatchURL&quot; gibt. sozusagen wenn bei Problemstelle1 in das array &quot;settings.szPatchURL&quot; die werte &quot;<a href="http://www.das-example.de" rel="nofollow">www.das-example.de</a>&quot; und &quot;<a href="http://www.das-example2.de" rel="nofollow">www.das-example2.de</a>&quot; geschrieben werden, das er bei Problemstelle2 per (z.b.) &quot;while&quot; solange alles abarbeitet, das er erst mit &quot;settings.szPatchURL[0]&quot; und dann nochmal mit &quot;settings.szPatchurl[1]&quot; durchläuft und die datei sozusagen zweimal patcht. hier hab ich aber auch noch keinen lösungsansatz, bitte helft mir dabei.</p>
<p>ich hoffe ihr habt alles verstanden, falls nicht bitte fragt nochmals nach.</p>
<p>ich bedanke mich schonmal für hilfe aller art.</p>
<p>mfg<br />
Warkiller102</p>
<p>da der code nicht von mir kommt aber open source ist:<br />
Copyright <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00a9.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--copyright"
      title=":copyright:"
      alt="©"
    /> 2005,2006,2007 NeonCube Networks Ltd. <a href="http://patch.neon-cube.net/" rel="nofollow">http://patch.neon-cube.net/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470478</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Sat, 08 Mar 2008 12:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Wed, 12 Mar 2008 19:26:37 GMT]]></title><description><![CDATA[<p>erstma was soll das rumgespamme? voll nervig -.-</p>
<p>nun noch:</p>
<p>LordBritish schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>der Fehler ist in Zeile 3.</p>
</blockquote>
<p>öhhm zeile drei von wo? und ich hätte gerne hilfe bei dem gesamten code, da ich mit c++ leider noch nicht intensiv gearbeitet habe und kaum die befehle kenne, bzw nicht weiß welche ich nutzen könnte und die tuts/bücher haben mir auch nicht wirklich geholfen.</p>
<p>mfg<br />
Warkiller102</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473228</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Wed, 12 Mar 2008 19:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Wed, 12 Mar 2008 19:54:06 GMT]]></title><description><![CDATA[<p>Die Spam-Beiträge werden (hoffentlich) in ein paar Minuten gelöscht sein, geh auf sowas gar nicht ein.</p>
<p>Das hier <code>while(str.str().c_str() == settings.szGRFNumber)</code> ist so bestimmt nicht gewollt, da hier nur Zeigeraddressen auf Gleichheit geprüft werden und garantiert nie übereinstimmen werden. Wenn du einen String-Vergleich machen willst, dann sollte das eher so aussehen: <code>while( str.str() == settings.szGRFNumber )</code> <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>
<blockquote>
<p>ch weiß nicht wie ich es schaffe das er bei Problemstelle1 den/die wert/e von &quot;str.str().c_str()&quot; in das array &quot;settings.szPatchURL&quot; bringt<br />
Erstmal musst du prüfen, ob die <code>str.str().size() &lt; MAXARRSIZE</code> gegeben ist um sicherzugehen, dass der String reinpasst. Dann einfach mit</p>
</blockquote>
</blockquote>
<pre><code class="language-cpp">std::string patch_url = str.str();
memcpy( settings.szPatchURL, patch_url.c_str(), patch_url.size()+1 ); // +1, um die Nullterminierung mitzunehmen
</code></pre>
<p>rüberkopieren. Normalerweise muss man in C++ nicht so scheußliche Sachen machen, liegt daran, dass C-Strings benutzt werden <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>Zu deiner zweiten Frage: Da hast du was falsch verstanden, settings.szPatchURL ist nur ein Array von Buchstaben, da kann also nur eine Zeichenkette drinstehen, nicht mehrere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473240</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 12 Mar 2008 19:54:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Wed, 12 Mar 2008 21:21:40 GMT]]></title><description><![CDATA[<p>erstmal danke für die hilfe, werd ich dann gleich mal probieren, aber wie ich das dann per &quot;throw&quot; ausgeben kann weiß du das?^^</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Zu deiner zweiten Frage: Da hast du was falsch verstanden, settings.szPatchURL ist nur ein Array von Buchstaben, da kann also nur eine Zeichenkette drinstehen, nicht mehrere.</p>
</blockquote>
<p>mhh gibts den eine möglichkeit das zu einem array zu machen wo ich mehrere strings reinbringen kann? wenn ja wie den ungefair?^^<br />
weil brauch ich ja dann später bei Problemstelle2 weil ich diese ja durch ne while-schleife (ich hoff mal das die wenigstens die gleiche bedeutung wie bei php,vb,java hat xD ) mehrfach durchlaufen lassen möchte^^</p>
<p>mfg<br />
Warkiller102</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473311</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Wed, 12 Mar 2008 21:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Thu, 13 Mar 2008 10:34:46 GMT]]></title><description><![CDATA[<p>Warkiller102 schrieb:</p>
<blockquote>
<p>erstmal danke für die hilfe, werd ich dann gleich mal probieren, aber wie ich das dann per &quot;throw&quot; ausgeben kann weiß du das?^^</p>
</blockquote>
<p>&quot;throw&quot; gehört zum Ausnahme-Modell, ist dir das auch geläufig? Jedenfalls kannst du die Ausnahmen, die geworfen werden, auch wieder fangen, mit <code>catch ( const char* error )</code> . In dem nachfolgendem Block kannst du dann mit <code>std::cout</code> , <code>std::cerr</code> oder <code>std::clog</code> den Fehler in dem entsprechenden Stream ausgeben (was dann in der Konsole landet, wenn du mit einer arbeitest).<br />
Ich sehe übrigens grad, in der main.cpp-Datei, die du hochgeladen hast, werden die Fehlermeldungen doch einer Zeile mit <code>catch(LPCSTR message)</code> gefangen und mit einer MessageBox ausgegeben.</p>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>mhh gibts den eine möglichkeit das zu einem array zu machen wo ich mehrere strings reinbringen kann? wenn ja wie den ungefair?^^<br />
weil brauch ich ja dann später bei Problemstelle2 weil ich diese ja durch ne while-schleife (ich hoff mal das die wenigstens die gleiche bedeutung wie bei php,vb,java hat xD ) mehrfach durchlaufen lassen möchte^^</p>
</blockquote>
<p>Theoretisch gibt's die Möglichkeit, klar. <em>Ungefähr</em> (man beachte die Schreibweise ;)) könntest du es so machen, dass du ein paar Strings reinbringst und durch ein Null-Terminierungszeichen trennst, der letzte String bekommt eine Doppel-Null. Ich würde das aber nicht empfehlen.</p>
<p>Ich finde übrigens, dass der Quelltext deines ausgewählten Patchers nicht unbedingt toll ist. Eventuell solltest du dich nach einem anderen umsehen, oder aber, wenn du ihn behalten willst, nicht darin rumpfuschen, sondern einen Wrapper dafür schreiben. Ich weiß nicht, inwiefern das funktioniert (hab jetzt keine Lust den kompletten Quelltext zu analysieren), aber du eventuell könntest die Funktionalität des Patchers kapseln (in einer Klasse o.ä.) und für jede der zu patchenden Dateien einzeln aufrufen/ausführen.</p>
<p>Jedenfalls kommt mir der Patcher wirklich <em>sehr</em> frickelig vor. Aber ich will dich nicht vom Fragen abhalten, sollte ja nicht unmöglich sein, das Ding umzuschreiben <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>edit: Oh man, wie soll man eigentlich eine Funktion mit 675 Zeilen überblicken.. <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="😕"
    /><br />
edit2: Btw ist das Ding eher in C geschrieben <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=":-/"
      alt="😕"
    /><br />
edit3: Und du solltest dir vielleicht den neueren Quelltext holen, der sieht immerhin <em>etwas</em> besser aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473500</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 13 Mar 2008 10:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Thu, 13 Mar 2008 16:14:41 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>mhh gibts den eine möglichkeit das zu einem array zu machen wo ich mehrere strings reinbringen kann? wenn ja wie den ungefair?^^<br />
weil brauch ich ja dann später bei Problemstelle2 weil ich diese ja durch ne while-schleife (ich hoff mal das die wenigstens die gleiche bedeutung wie bei php,vb,java hat xD ) mehrfach durchlaufen lassen möchte^^</p>
</blockquote>
<p>Theoretisch gibt's die Möglichkeit, klar. Ungefähr (man beachte die Schreibweise ;)) könntest du es so machen, dass du ein paar Strings reinbringst und durch ein Null-Terminierungszeichen trennst, der letzte String bekommt eine Doppel-Null. Ich würde das aber nicht empfehlen.</p>
</blockquote>
<p>mhh also wirds nicht so einfach wie bei php/java, dass man einfach die jeweiligen wörter, o.a. in ein array bringt und diesen dann per Array[0], Array[1],... abrufen kann?</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Ich finde übrigens, dass der Quelltext deines ausgewählten Patchers nicht unbedingt toll ist. Eventuell solltest du dich nach einem anderen umsehen, oder aber, wenn du ihn behalten willst, nicht darin rumpfuschen, sondern einen Wrapper dafür schreiben. Ich weiß nicht, inwiefern das funktioniert (hab jetzt keine Lust den kompletten Quelltext zu analysieren), aber du eventuell könntest die Funktionalität des Patchers kapseln (in einer Klasse o.ä.) und für jede der zu patchenden Dateien einzeln aufrufen/ausführen.</p>
<p>Jedenfalls kommt mir der Patcher wirklich <em>sehr</em> frickelig vor. Aber ich will dich nicht vom Fragen abhalten, sollte ja nicht unmöglich sein, das Ding umzuschreiben <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>nunja ich hab mir den neoncube eigentlich gewählt da er einer der besten patcher ist, was die funktionen von rar/grf dateien angeht. die meisten anderen haben sowas garnicht die patchen meist nur in die jeweilige grf.</p>
<p>mhh kannst mir erklären bzw ein beispiel für einen wrapper geben? kann mir darunter noch nicht viel vorstellen.</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>edit2: Btw ist das Ding eher in C geschrieben <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=":-/"
      alt="😕"
    /></p>
</blockquote>
<p>nunja ich hab echt nicht viel ahnung von c/c++ deshalb weiß/wusste ich es nicht genau</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>edit3: Und du solltest dir vielleicht den neueren Quelltext holen, der sieht immerhin <em>etwas</em> besser aus.</p>
</blockquote>
<p>mhh wen du den 1.2 meinst, das ist genau der den ich hier gepostet habe^^&quot;</p>
<pre><code class="language-cpp">if(GetPrivateProfileString(&quot;server&quot;, str.str().c_str(), NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)/*str.str().c_str() hat den wert patch_site1 (bzw die jeweile Zahl von der Var GRFNumbers)*/
    throw &quot;Invalid key in NeonCube.ini: patch_site&quot;; /*statt patch_site soll hier patch_site1 (bzw die jeweilige Zahl von der Var GRFNumbers stehen)*/
</code></pre>
<p>und bei dem &quot;throw&quot; meinte ich eigentlich den abschnitt, wenn z.b. der eintrag in der .ini datei fehlt bringt er per msg box das &quot;Invalid key in NeonCube.ini: patch_site&quot;, das kann man wohl nicht mit ner variable erweitern das er halt z.b. das ausgibt: &quot;Invalid key in NeonCube.ini: patch_siteX&quot; (wobei X die jeweilige zahl von &quot;GRFNumbers&quot; wäre?</p>
<p>aber nochmals vielen dank^^</p>
<p>mfg<br />
Warkiller102</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1473764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473764</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Thu, 13 Mar 2008 16:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Thu, 13 Mar 2008 16:55:16 GMT]]></title><description><![CDATA[<p>Warkiller102 schrieb:</p>
<blockquote>
<p>mhh also wirds nicht so einfach wie bei php/java, dass man einfach die jeweiligen wörter, o.a. in ein array bringt und diesen dann per Array[0], Array[1],... abrufen kann?</p>
</blockquote>
<p>Doch doch, nur muss dafür eben auch die entsprechende Datenstruktur zur Verfügung stehen <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="😉"
    /><br />
<code>Settings.szPatchURL</code> ist deklariert als <code>TCHAR szPatchURL[MAXARRSIZE];</code> , also als eine feste Anzahl 'char's, also Zeichen. Um ein statisches Array von Strings zu deklarieren, eignet sich z.B. <code>std::string patch_urls[100];</code> . Da ist die Array-Größe aber nicht veränderbar, also kann man auch den C++-Typ 'vector' nehmen: <code>std::vector&lt;std::string&gt; patch_urls</code> . Mit <code>patch_urls.push_back( &quot;Hallo&quot; );</code> kannst du einen String hinzufügen, <code>patch_urls.size()</code> gibt dir die Anzahl zurück und mit <code>patch_urls[10]</code> greifst du auf's zehnte Element zu. Also alles ganz einfach, nur musst du die Datenstruktur von 'Settings' anpassen oder deine Strings in einer anderen Datenstruktur speichern, jedenfalls nicht in einem char-Array <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>WarKiller102 schrieb:</p>
<blockquote>
<p>mhh kannst mir erklären bzw ein beispiel für einen wrapper geben? kann mir darunter noch nicht viel vorstellen.</p>
</blockquote>
<p>Wenn der Patcher nur einzelne Dateien patcht, wäre es evtl eine Möglichkeit, einen Skript oder ein kleines Programm zu schreiben, dass den Patcher für jede einzelne Datei aufruft.</p>
<p>WarKiller102 schrieb:</p>
<blockquote>
<p>Badestrand schrieb:</p>
<blockquote>
<p>edit2: Btw ist das Ding eher in C geschrieben <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=":-/"
      alt="😕"
    /></p>
</blockquote>
<p>nunja ich hab echt nicht viel ahnung von c/c++ deshalb weiß/wusste ich es nicht genau</p>
</blockquote>
<p>Hab mich geirrt, ist aber eher C-Stil; macht ja aber nix <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>Wegen dem 'throw': Du musst dir den String dann halt zusammenbasteln oder was anderes werfen. Zwei Möglichkeiten:</p>
<pre><code class="language-cpp">int patch_site = ...;
if ( ! bla )
{
    std::stringstream msg;
    msg &lt;&lt; &quot;Invalid key in NeonCube.ini: &quot; &lt;&lt; patch_site;
    throw std::string( msg.str() );
}

..

catch ( const std::string&amp; err )
{
    MessageBox( ..., err.c_str(), ... );
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">class InvalidKeyException : public std::exception // Erbt von der Standard-exception-Klasse
{
    public:
        InvalidKeyException( const unsigned int nr )
        {
            std::stringstream ss;
            ss &lt;&lt; &quot;Invalid key in NeonCube.ini: &quot; &lt;&lt; nr;
            ss &gt;&gt; m_err;
        }

        std::string what() const
        {
            return m_err;
        }

    private:
        std::string m_err;
};

int patch_site = ...;
if ( ! bla )
    throw InvalidKeyException( patch_site );

..

catch ( const InvalidKeyException&amp; err )
{
    MessageBox( ..., err.what(), ... );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1473787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1473787</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 13 Mar 2008 16:55:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 15:23:59 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Doch doch, nur muss dafür eben auch die entsprechende Datenstruktur zur Verfügung stehen <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="😉"
    /><br />
<code>Settings.szPatchURL</code> ist deklariert als <code>TCHAR szPatchURL[MAXARRSIZE];</code> , also als eine feste Anzahl 'char's, also Zeichen. Um ein statisches Array von Strings zu deklarieren, eignet sich z.B. <code>std::string patch_urls[100];</code> . Da ist die Array-Größe aber nicht veränderbar, also kann man auch den C++-Typ 'vector' nehmen: <code>std::vector&lt;std::string&gt; patch_urls</code> . Mit <code>patch_urls.push_back( &quot;Hallo&quot; );</code> kannst du einen String hinzufügen, <code>patch_urls.size()</code> gibt dir die Anzahl zurück und mit <code>patch_urls[10]</code> greifst du auf's zehnte Element zu. Also alles ganz einfach, nur musst du die Datenstruktur von 'Settings' anpassen oder deine Strings in einer anderen Datenstruktur speichern, jedenfalls nicht in einem char-Array <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>also demzufolge müsste ich suchen wo er &quot;szPatchURL&quot; mit den daten aus der .ini datei deklariert und diese dann auf sowas ähnliches umändern das er daraus ein &quot;richtiges&quot; array macht oder seh ich das jetzt falsch und müsste dann komplett alles ändern?</p>
<p>*hinzufüg*<br />
er deklariert das ja auch bei dem:</p>
<pre><code class="language-cpp">if(GetPrivateProfileString(&quot;server&quot;, &quot;...&quot;, NULL, settings.sz..., sizeof(settings.sz...) / sizeof(settings.sz...[0]), INIFILE) &lt;= 0)
</code></pre>
<p>oder ist das nur zum prüfen da, bzw der msgbox danach?</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Wegen dem 'throw': Du musst dir den String dann halt zusammenbasteln oder was anderes werfen. Zwei Möglichkeiten:</p>
</blockquote>
<p>nunja es wird ja derzeit so gemacht:</p>
<pre><code class="language-cpp">try
{
if(GetPrivateProfileString(&quot;server&quot;, &quot;grf_number&quot;, NULL, settings.szGRFNumber, sizeof(settings.szGRFNumber) / sizeof(settings.szGRFNumber[0]), INIFILE) &lt;= 0)
	throw &quot;Invalid key in NeonCube.ini: grf_number&quot;;

if(GetPrivateProfileString(&quot;server&quot;, &quot;patch_site1&quot;, NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)
	throw &quot;Invalid key in NeonCube.ini: patch_site&quot;;
}
catch(LPCSTR message)
{
	MessageBoxA(NULL, message, &quot;Error&quot;, MB_OK | MB_ICONERROR);
	AddErrorLog(&quot;%s\n&quot;, message);
	return -1;
}
</code></pre>
<p>ich hab das jetzt mal bei mir so gemacht und funktioniert auch, jedoch sobald der wert aber richtig ist bringt er mir dann am ende nur eine leere msgbox.</p>
<pre><code class="language-cpp">try
{
if(GetPrivateProfileString(&quot;server&quot;, &quot;grf_number&quot;, NULL, settings.szGRFNumber, sizeof(settings.szGRFNumber) / sizeof(settings.szGRFNumber[0]), INIFILE) &lt;= 0)
	throw &quot;Invalid key in NeonCube.ini: grf_number&quot;;

int GRFNumbers = 1;
std::stringstream str;
if(GetPrivateProfileString(&quot;server&quot;, &quot;patch_site1&quot;, NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)
	str &lt;&lt; &quot;Invalid key in NeonCube.ini: patch_site&quot; &lt;&lt; GRFNumbers;
	throw std::string ( str.str() );
}
catch(const std::string&amp; message)
{
	MessageBox(NULL, message.c_str(), &quot;Error&quot;, MB_OK | MB_ICONERROR);
	AddErrorLog(&quot;%s\n&quot;, message);
	return -1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1474387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474387</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Fri, 14 Mar 2008 15:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 16:35:22 GMT]]></title><description><![CDATA[<p>Warkiller102 schrieb:</p>
<blockquote>
<p>also demzufolge müsste ich suchen wo er &quot;szPatchURL&quot; mit den daten aus der .ini datei deklariert und diese dann auf sowas ähnliches umändern das er daraus ein &quot;richtiges&quot; array macht oder seh ich das jetzt falsch und müsste dann komplett alles ändern?</p>
</blockquote>
<p>Ich hab grad mal geguckt, ist nicht viel was du ändern musst - nur in der main.h die Datenstruktur inisettings anpassen; und diese Struktur wird nur in der main.cpp benutzt, als dateiglobale Variable.</p>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>er deklariert das ja auch bei dem:</p>
<pre><code class="language-cpp">if(GetPrivateProfileString(&quot;server&quot;, &quot;...&quot;, NULL, settings.sz..., sizeof(settings.sz...) / sizeof(settings.sz...[0]), INIFILE) &lt;= 0)
</code></pre>
<p>oder ist das nur zum prüfen da, bzw der msgbox danach?</p>
</blockquote>
<p>Huh? Versteh ich nicht und da wird nix deklariert <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="🙂"
    /> Er <em>verwendet</em> es da, klar, den Aufruf zu GetPrivateProfileString musst du anpassen, bzw du musst wahrscheinlich auch die Struktur der Ini-Datei ändern, wenn da mehrere Pfade statt nur einem drin sein soll.</p>
<p>Warkiller102 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(GetPrivateProfileString(&quot;server&quot;, &quot;patch_site1&quot;, NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)
    str &lt;&lt; &quot;Invalid key in NeonCube.ini: patch_site&quot; &lt;&lt; GRFNumbers;
    throw std::string ( str.str() );
</code></pre>
</blockquote>
<p>Prinzipiell richtig, nur werden Blöcke mit {} gekennzeichnet, nicht mit Einrückungen <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="😉"
    /> Konkret: Nach dem if müssen geschweifte Klammern die zwei eingerückten Zeilen umgeben. Ohne geschweifte Klammern wird nur der erste Ausdruck nach dem if ausgeführt, dass throw dann so oder so. Aber wieso hast du noch das &quot;patch_site&quot; in dem String drin?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474423</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 14 Mar 2008 16:35:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 18:22:40 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Ich hab grad mal geguckt, ist nicht viel was du ändern musst - nur in der main.h die Datenstruktur inisettings anpassen; und diese Struktur wird nur in der main.cpp benutzt, als dateiglobale Variable.</p>
</blockquote>
<p>also bei der main.h müsste ich das &quot;TCHAR szPatchURL[MAXARRAYSIZE];&quot; zu &quot;std::vector<a href="std::string" rel="nofollow">std::string</a> szPatchURL;&quot; umschreiben oder?</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>er deklariert das ja auch bei dem:</p>
<pre><code class="language-cpp">if(GetPrivateProfileString(&quot;server&quot;, &quot;...&quot;, NULL, settings.sz..., sizeof(settings.sz...) / sizeof(settings.sz...[0]), INIFILE) &lt;= 0)
</code></pre>
<p>oder ist das nur zum prüfen da, bzw der msgbox danach?</p>
</blockquote>
<p>Huh? Versteh ich nicht und da wird nix deklariert <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="🙂"
    /> Er <em>verwendet</em> es da, klar, den Aufruf zu GetPrivateProfileString musst du anpassen, bzw du musst wahrscheinlich auch die Struktur der Ini-Datei ändern, wenn da mehrere Pfade statt nur einem drin sein soll.</p>
</blockquote>
<p>nunja ich meinte irgendwo muss er ja den inhalt von der .ini datei in die variable bringen oder?^^<br />
achja die .ini datei sieht ungefähr so aus:</p>
<pre><code>[server]
patch_site1 = www.example.de
patch_site2 = www.example2.de
</code></pre>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Warkiller102 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(GetPrivateProfileString(&quot;server&quot;, &quot;patch_site1&quot;, NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)
    str &lt;&lt; &quot;Invalid key in NeonCube.ini: patch_site&quot; &lt;&lt; GRFNumbers;
    throw std::string ( str.str() );
</code></pre>
</blockquote>
<p>Prinzipiell richtig, nur werden Blöcke mit {} gekennzeichnet, nicht mit Einrückungen <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="😉"
    /> Konkret: Nach dem if müssen geschweifte Klammern die zwei eingerückten Zeilen umgeben. Ohne geschweifte Klammern wird nur der erste Ausdruck nach dem if ausgeführt, dass throw dann so oder so. Aber wieso hast du noch das &quot;patch_site&quot; in dem String drin?</p>
</blockquote>
<p>ok jetzt funktionierts^^ bin ich dank der vb/php lehrer so gewöhnt das man alles was nach dem if kommt auch ohne {} schreiben kann, obwohl ichs sonst auch nich mache <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=":/"
      alt="😕"
    /> ^^</p>
<p>und vielen dank das du mir so sehr hilfst, würde sonst immer noch am anfang sitzen^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474472</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Fri, 14 Mar 2008 18:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 18:36:20 GMT]]></title><description><![CDATA[<p>Warkiller102 schrieb:</p>
<blockquote>
<p>also bei der main.h müsste ich das &quot;TCHAR szPatchURL[MAXARRAYSIZE];&quot; zu &quot;std::vector<a href="std::string" rel="nofollow">std::string</a> szPatchURL;&quot; umschreiben oder?</p>
</blockquote>
<p>Richtig, aber das einfachste ist, du arbeitest dann erstmal nur mit Multibyte (also in den Projektoptionen irgendwo einstellen), sonst musst du std::wstring nehmen.</p>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>nunja ich meinte irgendwo muss er ja den inhalt von der .ini datei in die variable bringen oder?^^<br />
achja die .ini datei sieht ungefähr so aus:</p>
<pre><code>[server]
patch_site1 = www.example.de
patch_site2 = www.example2.de
</code></pre>
</blockquote>
<p>Achso, ja, klar! Gut, ich würde der Einfachheit noch ein oder zwei kleine Hilfsfunktionen reinbringen, um das Einlesen zu vereinfachen, etwa so:</p>
<pre><code class="language-cpp">// Ungetestet:
string getPatchFile( const string&amp; section, const unsigned int nr, const string&amp; ini_path )
{
    stringstream key;
    key &lt;&lt; &quot;patch_site&quot; &lt;&lt; nr;

    char ret[1000];
    GetPrivateProfileString( section, key.str().c_str(), &quot;&quot;, ret, 1000, ini_path.c_str() );
    return string( ret );
}

// Und dann, zum auslesen:
string path = &quot;a&quot;; // Damit beim ersten mal die Bedingung der for-Schleife erfüllt ist. Etwas unschön.. :D
for ( unsigned int nr=1; path.size()&gt;0; nr++ )
{
    path = getPatchFile( &quot;server&quot;, nr, INIFILE );
    if ( path.size() &gt; 0 )
        settings.urls.push_back( path ); // Zur Liste hinzufügen
}
</code></pre>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>und vielen dank das du mir so sehr hilfst, würde sonst immer noch am anfang sitzen^^</p>
</blockquote>
<p>Nicht der Rede wert <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="🙂"
    /> Ist auch immer wieder interessant zu sehen, an was andere so arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474477</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 14 Mar 2008 18:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 20:19:20 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Achso, ja, klar! Gut, ich würde der Einfachheit noch ein oder zwei kleine Hilfsfunktionen reinbringen, um das Einlesen zu vereinfachen, etwa so:</p>
<pre><code class="language-cpp">// Ungetestet:
string getPatchFile( const string&amp; section, const unsigned int nr, const string&amp; ini_path )
{
    stringstream key;
    key &lt;&lt; &quot;patch_site&quot; &lt;&lt; nr;

    char ret[1000];
    GetPrivateProfileString( section, key.str().c_str(), &quot;&quot;, ret, 1000, ini_path.c_str() );
    return string( ret );
}

// Und dann, zum auslesen:
string path = &quot;a&quot;; // Damit beim ersten mal die Bedingung der for-Schleife erfüllt ist. Etwas unschön.. :D
for ( unsigned int nr=1; path.size()&gt;0; nr++ )
{
    path = getPatchFile( &quot;server&quot;, nr, INIFILE );
    if ( path.size() &gt; 0 )
        settings.urls.push_back( path ); // Zur Liste hinzufügen
}
</code></pre>
</blockquote>
<p>mhh gut aber wie bind ich das nun in das schon vorhande ein, auch das mit dem &quot;TCHAR ...;&quot; bringt mir dann nur fehler wenn ich es in &quot;std::vector...;&quot; schreibe? <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=":/"
      alt="😕"
    /></p>
<p>hab nun auch noch ein anderes (aber eher kleines problem^^)<br />
und zwar hier:</p>
<pre><code class="language-cpp">if(GetPrivateProfileString(\&quot;server\&quot;, \&quot;grf_number\&quot;, NULL, settings.szGRFNumber, sizeof(settings.szGRFNumber) / sizeof(settings.szGRFNumber[0]), INIFILE) &lt;= 0)
	throw \&quot;Invalid key in NeonCube.ini: grf_number\&quot;;

int GRFNumbers = 1;
std::stringstream grfnumb;
std::stringstream numb;
std::stringstream str;
grfnumb &lt;&lt; GRFNumbers;
while(grfnumb.str() &gt;= settings.szGRFNumber)
	{
	str &lt;&lt; \&quot;patch_site\&quot; &lt;&lt; GRFNumbers;
	if(GetPrivateProfileString(\&quot;server\&quot;, str.str().c_str(), NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)
	{
		numb &lt;&lt; \&quot;Invalid key in NeonCube.ini: patch_site\&quot; &lt;&lt; GRFNumbers;
		throw std::string ( numb.str() );
	}
	++GRFNumbers;
	grfnumb &lt;&lt; GRFNumbers;
}
</code></pre>
<p>hier ist mein problem die while schleife, da es ja char und strings sind behandelt er die zahlen nicht als zahlen und bekommt irgendwie nicht mit wenn ich ihm sag er soll sie solange durchführen bis grfnumb = settings.GRFNumber ist, wie kann ich das beheben?</p>
<p>mhh soll ich vieleicht mal die ganzen dateien hochstellen die (wie ich glaube) für den hauptteil verantwortlich sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474538</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Fri, 14 Mar 2008 20:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 21:40:17 GMT]]></title><description><![CDATA[<p>Warkiller102 schrieb:</p>
<blockquote>
<p>mhh gut aber wie bind ich das nun in das schon vorhande ein, auch das mit dem &quot;TCHAR ...;&quot; bringt mir dann nur fehler wenn ich es in &quot;std::vector...;&quot; schreibe? <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=":/"
      alt="😕"
    /></p>
</blockquote>
<p>Also ich hab's bei mir mal ausprobiert, ich bekomme nur 4 Fehler, alle in der Art <code>error C2039: 'szPatchURL': Ist kein Element von 'inisetting'</code> .<br />
Drei der Fehler sind in der Zeile mit GetProfileString, wo halt die Patch-URLs aus der Ini-Datei gelesen werden. Da kannst du das einsetzen, was ich im Post eins drüber vorgeschlagen hab. Also die Funktion &quot;getPatchFile&quot; muss halt irgendwo drüber, da der std-Namensraum nicht mit using benutzt wird, musst du in &quot;getPatchFile&quot; halt auch noch ein paar mal &quot;std::&quot; einbauen <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>Warkiller102 schrieb:</p>
<blockquote>
<p>hab nun auch noch ein anderes (aber eher kleines problem^^)<br />
und zwar hier:</p>
<pre><code class="language-cpp">if(GetPrivateProfileString(\&quot;server\&quot;, \&quot;grf_number\&quot;, NULL, settings.szGRFNumber, sizeof(settings.szGRFNumber) / sizeof(settings.szGRFNumber[0]), INIFILE) &lt;= 0)
	throw \&quot;Invalid key in NeonCube.ini: grf_number\&quot;;

int GRFNumbers = 1;
std::stringstream grfnumb;
std::stringstream numb;
std::stringstream str;
grfnumb &lt;&lt; GRFNumbers;
while(grfnumb.str() &gt;= settings.szGRFNumber)
	{
	str &lt;&lt; \&quot;patch_site\&quot; &lt;&lt; GRFNumbers;
	if(GetPrivateProfileString(\&quot;server\&quot;, str.str().c_str(), NULL, settings.szPatchURL, sizeof(settings.szPatchURL) / sizeof(settings.szPatchURL[0]), INIFILE) &lt;= 0)
	{
		numb &lt;&lt; \&quot;Invalid key in NeonCube.ini: patch_site\&quot; &lt;&lt; GRFNumbers;
		throw std::string ( numb.str() );
	}
	++GRFNumbers;
	grfnumb &lt;&lt; GRFNumbers;
}
</code></pre>
<p>hier ist mein problem die while schleife, da es ja char und strings sind behandelt er die zahlen nicht als zahlen und bekommt irgendwie nicht mit wenn ich ihm sag er soll sie solange durchführen bis grfnumb = settings.GRFNumber ist, wie kann ich das beheben?</p>
</blockquote>
<p>Ich verstehe nicht genau, was die Schleife machen soll - wenn du mir die Soll-Funktionalität erklärst, fällt uns bestimmt was gutes ein.</p>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>mhh soll ich vieleicht mal die ganzen dateien hochstellen die (wie ich glaube) für den hauptteil verantwortlich sind?</p>
</blockquote>
<p>Ja, das wäre nicht schlecht, die Zeile mit <code>GetPrivateProfileString(\&quot;server\&quot;, \&quot;grf_number\&quot;,...)</code> finde ich im Original-Code nicht und weiß ja generell nicht, auf welchem Stand dein Code grad ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474573</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 14 Mar 2008 21:40:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Fri, 14 Mar 2008 21:53:03 GMT]]></title><description><![CDATA[<p>nunja die schleife soll dann dafür dasein, das man &quot;unendliche&quot; viele einträge machen kann, die er dann halt jeweils in die szPatchURL bringt, bzw checkt ob das richtig ist oder nicht^^ aber sollte man wohl eher dann machen wenn das mit dem array richtig klappt oder?^^</p>
<p>habs mal hier: <a href="http://bdw-server.servebbs.com/Cplusplus/Patcher.rar" rel="nofollow">http://bdw-server.servebbs.com/Cplusplus/Patcher.rar</a> hochgeladen<br />
(zum richtig testen müssteste dir nurnoch 2 exen und eine .grf (einfach irgendeine datei nehmen und umbenennen zu ner .grf) machen, am besten vorher nochma in &quot;neoncube/neoncube.ini&quot; gucken^^)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474582</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Fri, 14 Mar 2008 21:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Sat, 15 Mar 2008 09:49:21 GMT]]></title><description><![CDATA[<p>Warkiller102 schrieb:</p>
<blockquote>
<p>nunja die schleife soll dann dafür dasein, das man &quot;unendliche&quot; viele einträge machen kann, die er dann halt jeweils in die szPatchURL bringt, bzw checkt ob das richtig ist oder nicht^^ aber sollte man wohl eher dann machen wenn das mit dem array richtig klappt oder?^^</p>
</blockquote>
<p>Ja, besser erstmal das Array in Schwung bringen <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="😃"
    /> Wofür steht eigentlich das GRF? Und so ganz versteh ich die Schleife immer noch nicht, <em>wer</em> macht denn Einträge? Und jedesmal wird geschaut, ob &quot;patch_sitexy&quot; schon in der Ini-Datei eingetragen ist? Eventuell könntest du in der Ini-Section [server] auch einfach die Anzahl der URLs speichern, irgendwie &quot;patch_site_count=xy&quot; oder so?</p>
<p>Warkiller102 schrieb:</p>
<blockquote>
<p>habs mal hier: <a href="http://bdw-server.servebbs.com/Cplusplus/Patcher.rar" rel="nofollow">http://bdw-server.servebbs.com/Cplusplus/Patcher.rar</a> hochgeladen<br />
(zum richtig testen müssteste dir nurnoch 2 exen und eine .grf (einfach irgendeine datei nehmen und umbenennen zu ner .grf) machen, am besten vorher nochma in &quot;neoncube/neoncube.ini&quot; gucken^^)</p>
</blockquote>
<p>Die Seite geht bei mir irgendwie nicht <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=":-/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474683</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 15 Mar 2008 09:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Sat, 15 Mar 2008 10:27:46 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Ja, besser erstmal das Array in Schwung bringen <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="😃"
    /> Wofür steht eigentlich das GRF? Und so ganz versteh ich die Schleife immer noch nicht, <em>wer</em> macht denn Einträge? Und jedesmal wird geschaut, ob &quot;patch_sitexy&quot; schon in der Ini-Datei eingetragen ist? Eventuell könntest du in der Ini-Section [server] auch einfach die Anzahl der URLs speichern, irgendwie &quot;patch_site_count=xy&quot; oder so?</p>
</blockquote>
<p>GRF ist sowas wie ein &quot;rar&quot; verzeichnis also nen container für dateien^^<br />
die anzahl ist ja gespeichert in der GRFNumbers, die heißt in der .ini &quot;grf_number&quot;^^</p>
<p>und ja er soll halt prüfen ob ein wert vorliegt und wenn ja dann soll er weitermachen oder halt den throw wert ausgeben^^</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Die Seite geht bei mir irgendwie nicht <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=":-/"
      alt="😕"
    /></p>
</blockquote>
<p>lag am provider, bzw internet das war seit heut früh irgendwie down, ebenfalls der server dürft jetzt aber wieder gehen^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474704</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Sat, 15 Mar 2008 10:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Mon, 17 Mar 2008 12:53:13 GMT]]></title><description><![CDATA[<p>grüße<br />
hast du/hat schon jemand vielleicht einen anderen/neuen lösungsvorschlag? komm allein irgendwie nicht weiter.</p>
<p>mfg<br />
Warkiller102</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1475824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1475824</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Mon, 17 Mar 2008 12:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Tue, 18 Mar 2008 00:59:09 GMT]]></title><description><![CDATA[<p>Ich guck morgen irgendwann nochmal in den Code, wenn ich Zeit finde <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/1476262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476262</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 18 Mar 2008 00:59:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Thu, 20 Mar 2008 21:16:46 GMT]]></title><description><![CDATA[<p>Haste schon Zeit gefunden?^^</p>
<p>Oder hat vielleicht noch jemand anders eine Idee?</p>
<p>MfG<br />
Warkiller102</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1478071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1478071</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Thu, 20 Mar 2008 21:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Patcher on Mon, 24 Mar 2008 13:10:05 GMT]]></title><description><![CDATA[<p>grüße<br />
hab den patcher nochma neu hochgeladen, mir ist aufgefallen das da einige dateien nich mit drin waren.</p>
<p>hier nochma der link: <a href="http://bdw-server.servebbs.com/Cplusplus/Patcher.rar" rel="nofollow">http://bdw-server.servebbs.com/Cplusplus/Patcher.rar</a></p>
<p>hat aber vieleicht schon jemand eine idee?</p>
<p>mfg<br />
Warkiller102</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479561</guid><dc:creator><![CDATA[Warkiller102]]></dc:creator><pubDate>Mon, 24 Mar 2008 13:10:05 GMT</pubDate></item></channel></rss>