<?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[(char*) geht mal und mal nicht]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hab da ein Problem bei dem ich nicht weiter weiß und deshalb für jeden Tipp dankbar bin! Also mein Problem ist folgendes:</p>
<p>Ich habe ein vorgegebenes Programm erweitert. D.H ich habe statt eine 10 Stelligen Nummer nun ein 30 stellige Nummer. Das war ja soweit einfach und funktioniert auch ! mein Problem ensteht dann in Folgenenden Thread :</p>
<pre><code>UINT ScanThreadProc(LPVOID pParam)
{
	TRACE(&quot;start scanning\n&quot;);
  	g_ThreadFinished.ResetEvent();
	bool fileexist = false;
	CFile file;
	char* ReceivePfad;	

	ReceivePfad = (char*) pParam;

	CString string;
         string.Format(&quot;%s&quot;,ReceivePfad);

         ...
</code></pre>
<p>hier wird ein Pfad übergeben welcher vor dem Aufruf noch richtig ist. Nun passiert folgendes: da die Funktion mehrmals aufgerufen wird funktioniert die <em><em>ReceivePfad = (char</em>) pParam;</em>* konvertierung beim erstenmal richitg und im <strong>string</strong> steht der richtige Pfad. Beim zweiten Aufruf wird dann aus dem Pfad (der vor dem Threadaufruf richtig ist) nur noch ein <strong>&quot;P&quot;</strong>. Nun weiß ich nicht weiter. Ich schätze mal das des irgendwas mit der Speicherverwaltung zu tun hat da ich ja nichts geändert habe ausser dass ich aus einer 10 eine 30 stellige Nummer gemacht habe. Habe auch mal die Resourcendatei angeschaut. Kann es sein das ich den dort stehenden Ausdruck:</p>
<pre><code>#define IDC_EDIT_EINGABE                1000
</code></pre>
<p>ändern muss? bedeutet die 1000 vielleicht der reservierte Speicherbereich? Ich kenn mich da halt nicht so gut aus und wollte lieber mal nachfargen bevor ich was schredder.</p>
<p>P.S. IDC_EDIT_EINGABE wird s im Porg bei der geänderten Nummer verwendet</p>
<p>Für euere Hilfe wäre ich sehr dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/140651/char-geht-mal-und-mal-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 14:00:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140651.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Mar 2006 12:35:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Thu, 16 Mar 2006 12:35:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hab da ein Problem bei dem ich nicht weiter weiß und deshalb für jeden Tipp dankbar bin! Also mein Problem ist folgendes:</p>
<p>Ich habe ein vorgegebenes Programm erweitert. D.H ich habe statt eine 10 Stelligen Nummer nun ein 30 stellige Nummer. Das war ja soweit einfach und funktioniert auch ! mein Problem ensteht dann in Folgenenden Thread :</p>
<pre><code>UINT ScanThreadProc(LPVOID pParam)
{
	TRACE(&quot;start scanning\n&quot;);
  	g_ThreadFinished.ResetEvent();
	bool fileexist = false;
	CFile file;
	char* ReceivePfad;	

	ReceivePfad = (char*) pParam;

	CString string;
         string.Format(&quot;%s&quot;,ReceivePfad);

         ...
</code></pre>
<p>hier wird ein Pfad übergeben welcher vor dem Aufruf noch richtig ist. Nun passiert folgendes: da die Funktion mehrmals aufgerufen wird funktioniert die <em><em>ReceivePfad = (char</em>) pParam;</em>* konvertierung beim erstenmal richitg und im <strong>string</strong> steht der richtige Pfad. Beim zweiten Aufruf wird dann aus dem Pfad (der vor dem Threadaufruf richtig ist) nur noch ein <strong>&quot;P&quot;</strong>. Nun weiß ich nicht weiter. Ich schätze mal das des irgendwas mit der Speicherverwaltung zu tun hat da ich ja nichts geändert habe ausser dass ich aus einer 10 eine 30 stellige Nummer gemacht habe. Habe auch mal die Resourcendatei angeschaut. Kann es sein das ich den dort stehenden Ausdruck:</p>
<pre><code>#define IDC_EDIT_EINGABE                1000
</code></pre>
<p>ändern muss? bedeutet die 1000 vielleicht der reservierte Speicherbereich? Ich kenn mich da halt nicht so gut aus und wollte lieber mal nachfargen bevor ich was schredder.</p>
<p>P.S. IDC_EDIT_EINGABE wird s im Porg bei der geänderten Nummer verwendet</p>
<p>Für euere Hilfe wäre ich sehr dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017461</guid><dc:creator><![CDATA[Robert.sc]]></dc:creator><pubDate>Thu, 16 Mar 2006 12:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Thu, 16 Mar 2006 12:41:35 GMT]]></title><description><![CDATA[<p>Kannst verraten, wie der Pfad denn lauten sollte? Ist das 'P' der richtige Anfangsbuchstabe?</p>
<p>Zur Resourcendatei: Diese Zeile definiert bloß den Bezeichner IDC_EDIT_EINGABE als den Wert 1000 zu.<br />
Hat nichts mit Speicher zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017470</guid><dc:creator><![CDATA[Paul_C.]]></dc:creator><pubDate>Thu, 16 Mar 2006 12:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Thu, 16 Mar 2006 12:44:43 GMT]]></title><description><![CDATA[<p>Zeig doch mal, wie du den Thread startest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017474</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 16 Mar 2006 12:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Mon, 20 Mar 2006 18:40:19 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9851">@PAul_C</a>: Leider fängt der Pfad mit &quot;C:\&quot; an. Und ein &quot;P&quot; kommt auch nicht in dem Pfad vor!<br />
Wegen der Resdatei danke das wusste ich noch nicht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2803">@MFK</a>:</p>
<p>er wird mit</p>
<p>AfxBeginThread(ScanThreadProc,l_cLogoutPfadReceive);</p>
<p>wobei l_cLogoutPfadReceive vom Typ char l_cLogoutPfadReceive[256] ist und vor dem Aufruf mit folgenden Befehl erstellt wird :</p>
<p>strcpy(l_cLogoutPfadReceive,m_CReceiveFile);</p>
<p>Danke für euere interesse ich wüsste sonst nicht was ich probieren sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020528</guid><dc:creator><![CDATA[Robert.sc]]></dc:creator><pubDate>Mon, 20 Mar 2006 18:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Mon, 20 Mar 2006 18:58:14 GMT]]></title><description><![CDATA[<p><a href="http://Robert.sc" rel="nofollow">Robert.sc</a> schrieb:</p>
<blockquote>
<p>wobei l_cLogoutPfadReceive vom Typ char l_cLogoutPfadReceive[256] ist und vor dem Aufruf mit folgenden Befehl erstellt wird :</p>
</blockquote>
<p>Und was passiert nach dem Aufruf? Ist l_cLogoutPfadReceive möglicherweise eine lokale Variable? Hast du sichergestellt, dass l_cLogoutPfadReceive überhaupt noch existiert, wenn du den Parameter im Thread auswertest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020542</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 20 Mar 2006 18:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Fri, 24 Mar 2006 11:40:58 GMT]]></title><description><![CDATA[<p>mhhh das wär eine Idee! Ich habe bis jetzt immer vor und nachdem Aufruf geschaut ob der Pfad noch drinn steht! Und das war der Fall, aber des beweißt ja nicht dass der Pfad wärend dem Thread noch aktuell ist. habe unten nochmal den Code rund um den Aufruf gepostet. writelog ist ne Funtkion die den Parameter in eine .log Datei schreibt.</p>
<pre><code>char l_cPHPPfadReceive[256];
            strcpy(l_cPHPPfadReceive,m_CReceiveFile);
            DeleteFile((LPCTSTR)l_cPHPPfadReceive);

            writelog(l_cPHPPfadReceive);
	   AfxBeginThread(ScanThreadProc,l_cPHPPfadReceive);
            writelog(l_cPHPPfadReceive);

            g_eventStart.SetEvent();
	   g_eventKill.ResetEvent();

   }; //end of if

   int laenge=m_CEingabe.GetLength();
   CEdit* E_p = (CEdit*) GetDlgItem (IDC_EDIT_EINGABE) ;
   E_p-&gt;SetFocus () ;
   E_p-&gt;SetSel (0 , laenge) ; 

	UpdateData(FALSE);
}
</code></pre>
<p>Das mekwürdige : wenn ich ein 10 stellige Nummer nehme bringt er ab und zu auch den Fehler.</p>
<p>Muss ich irgendwo eine Pause einbauen damit sichergestellt ist dass l_cPHPPfadReceive noch existiert??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022985</guid><dc:creator><![CDATA[Robert.sc]]></dc:creator><pubDate>Fri, 24 Mar 2006 11:40:58 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Fri, 24 Mar 2006 16:22:48 GMT]]></title><description><![CDATA[<p><a href="http://Robert.sc" rel="nofollow">Robert.sc</a> schrieb:</p>
<blockquote>
<p>Das mekwürdige : wenn ich ein 10 stellige Nummer nehme bringt er ab und zu auch den Fehler.</p>
</blockquote>
<p>Das ist das Schöne an undefiniertem Verhalten: Wenn es mal klappt, kannst du daraus nicht folgern, dass du es richtig gemacht hast.</p>
<blockquote>
<p>Muss ich irgendwo eine Pause einbauen damit sichergestellt ist dass l_cPHPPfadReceive noch existiert??</p>
</blockquote>
<p>Du könntest ein Event benutzen. Du könntest auch l_cPHPPfadReceive mit new anlegen, und nach dem Auswerten/Kopieren im Thread wieder löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023245</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 24 Mar 2006 16:22:48 GMT</pubDate></item><item><title><![CDATA[Reply to (char*) geht mal und mal nicht on Mon, 27 Mar 2006 11:03:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Hast du sichergestellt, dass l_cLogoutPfadReceive überhaupt noch existiert, wenn du den Parameter im Thread auswertest?</p>
</blockquote>
<p>Alos du hattest damit natürlich recht!! Die lokale Variable war garnicht mehr verfügbar als der Thread sie auswerten wollte! Da die Anwendung sowieso nicht mehr lange im Gebrauch ist habe ich die Variable einfach global deklariert und schon läuft sie einwandfrei. Das ist zwar nicht die sauberste Lösung aber sie funkitioniert und das ist ja das wichtigste! Danke nochmal für die Tipps!! Die haben mir sehr viel Zeit und Nerven gespart!</p>
<p>Schöne Woche noch</p>
<p>Mfg Robert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1024676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024676</guid><dc:creator><![CDATA[robert.sc]]></dc:creator><pubDate>Mon, 27 Mar 2006 11:03:52 GMT</pubDate></item></channel></rss>