<?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 einer Funktion]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe hier eine Funktion, die an sich zwar funktioniert, aber in unregelmaessigen Abstaenden dazu fuehrt, dass der Server auf dem sie benutzt wird einfriert. Ich wollte mal schauen ob hier irgendjemand irgendetwas an der Funktion sieht was generell 'gefaehrlich' ist, da ich dafuer nicht wirklich zu gebrauchen bin (mache mehr C# als C++).</p>
<pre><code>void CServerDlg::WriteConsoleString(LPCTSTR pMsg,...)
{
	CM_TRACE_FUNC_ARG1(&quot;WriteConsoleString&quot;, &quot;(%s)&quot;, pMsg);
	TCHAR		str[250];
	va_list		marker;
	int			nLen;

	static int nMax = 250;

	if(m_edConsole.GetLineCount() &gt; nMax)
	{
		// Nuke the oldest 75%.
		int iLine = (m_edConsole.GetLineCount()*75) / 100;
		int iChar = m_edConsole.LineIndex(iLine);

		m_edConsole.SetRedraw(FALSE);
		m_edConsole.SetSel(0, iChar);
		m_edConsole.ReplaceSel(&quot;&quot;, FALSE);
		m_edConsole.SetRedraw(TRUE);
	}

	va_start(marker, pMsg);
	_vsnprintf( str, sizeof( str ) - 1, pMsg, marker );
	va_end(marker);

	int len = strlen(str);
	if (len &gt; 0)
	{
		if (len &gt; 0 &amp;&amp; str[len-1] &lt; 32) str[len-1] = '\0';

         SYSTEMTIME st;
         GetSystemTime(&amp;st);
		 //Date - Time
		 // printf(&quot;Year:%d\nMonth:%d\nDate:%d\nHour:%d\nMin:%d\nSecond:% d\n&quot; ,st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);

		 TCHAR str2[250];
		 TCHAR str3[250];
		 int tmphr = st.wHour+i_TimeOffset;
		 if (tmphr == 24)
		 {tmphr = 0;}
		sprintf(str2,&quot;[%02d:%02d:%02d - %02d.%02d.%d] %s\r\n&quot;,(tmphr),st.wMinute,st.wSecond,st.wMonth,st.wDay,st.wYear,str);
		sprintf(str3,&quot;[%02d:%02d:%02d - %02d.%02d.%d] %s&quot;,(tmphr),st.wMinute,st.wSecond,st.wMonth,st.wDay,st.wYear,str);

		if(strcmp(s_ChatLogName ,&quot;null&quot;) != 0 &amp;&amp; i_DoLogging == 1)
		{
			//Append to file
			FILE *log = fopen(s_ChatLogName, &quot;at&quot;);
			if (!log) log = fopen(s_ChatLogName, &quot;wt&quot;);
			if (!log) {
				return;   // bail out if we can't log
			}
			sprintf(str,&quot;%s&quot;,str2);
			fputs(str,log);
			fclose(log);
		}

		nLen = m_edConsole.SendMessage(EM_GETLIMITTEXT, 0, 0);
		m_edConsole.SetSel(nLen, nLen);
		m_edConsole.ReplaceSel(str2);

	}
}
</code></pre>
<p>Vom logging abgesehen ist es der 'original' code, der seit etwa 9 Jahren problemlos arbeitet.. also muesste da das Problem zu finden sein. Erster gedanke war, dass die datei irgendwoanders bereits veraendert wird und es so problemen kommt, aber das ist nicht der fall...</p>
<p>Hoffentlich findet jemand was :0)<br />
Danke schonmal fuers angucken</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175288/problem-mit-einer-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 23:40:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175288.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Mar 2007 19:41:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit einer Funktion on Thu, 08 Mar 2007 19:41:16 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe hier eine Funktion, die an sich zwar funktioniert, aber in unregelmaessigen Abstaenden dazu fuehrt, dass der Server auf dem sie benutzt wird einfriert. Ich wollte mal schauen ob hier irgendjemand irgendetwas an der Funktion sieht was generell 'gefaehrlich' ist, da ich dafuer nicht wirklich zu gebrauchen bin (mache mehr C# als C++).</p>
<pre><code>void CServerDlg::WriteConsoleString(LPCTSTR pMsg,...)
{
	CM_TRACE_FUNC_ARG1(&quot;WriteConsoleString&quot;, &quot;(%s)&quot;, pMsg);
	TCHAR		str[250];
	va_list		marker;
	int			nLen;

	static int nMax = 250;

	if(m_edConsole.GetLineCount() &gt; nMax)
	{
		// Nuke the oldest 75%.
		int iLine = (m_edConsole.GetLineCount()*75) / 100;
		int iChar = m_edConsole.LineIndex(iLine);

		m_edConsole.SetRedraw(FALSE);
		m_edConsole.SetSel(0, iChar);
		m_edConsole.ReplaceSel(&quot;&quot;, FALSE);
		m_edConsole.SetRedraw(TRUE);
	}

	va_start(marker, pMsg);
	_vsnprintf( str, sizeof( str ) - 1, pMsg, marker );
	va_end(marker);

	int len = strlen(str);
	if (len &gt; 0)
	{
		if (len &gt; 0 &amp;&amp; str[len-1] &lt; 32) str[len-1] = '\0';

         SYSTEMTIME st;
         GetSystemTime(&amp;st);
		 //Date - Time
		 // printf(&quot;Year:%d\nMonth:%d\nDate:%d\nHour:%d\nMin:%d\nSecond:% d\n&quot; ,st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);

		 TCHAR str2[250];
		 TCHAR str3[250];
		 int tmphr = st.wHour+i_TimeOffset;
		 if (tmphr == 24)
		 {tmphr = 0;}
		sprintf(str2,&quot;[%02d:%02d:%02d - %02d.%02d.%d] %s\r\n&quot;,(tmphr),st.wMinute,st.wSecond,st.wMonth,st.wDay,st.wYear,str);
		sprintf(str3,&quot;[%02d:%02d:%02d - %02d.%02d.%d] %s&quot;,(tmphr),st.wMinute,st.wSecond,st.wMonth,st.wDay,st.wYear,str);

		if(strcmp(s_ChatLogName ,&quot;null&quot;) != 0 &amp;&amp; i_DoLogging == 1)
		{
			//Append to file
			FILE *log = fopen(s_ChatLogName, &quot;at&quot;);
			if (!log) log = fopen(s_ChatLogName, &quot;wt&quot;);
			if (!log) {
				return;   // bail out if we can't log
			}
			sprintf(str,&quot;%s&quot;,str2);
			fputs(str,log);
			fclose(log);
		}

		nLen = m_edConsole.SendMessage(EM_GETLIMITTEXT, 0, 0);
		m_edConsole.SetSel(nLen, nLen);
		m_edConsole.ReplaceSel(str2);

	}
}
</code></pre>
<p>Vom logging abgesehen ist es der 'original' code, der seit etwa 9 Jahren problemlos arbeitet.. also muesste da das Problem zu finden sein. Erster gedanke war, dass die datei irgendwoanders bereits veraendert wird und es so problemen kommt, aber das ist nicht der fall...</p>
<p>Hoffentlich findet jemand was :0)<br />
Danke schonmal fuers angucken</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241917</guid><dc:creator><![CDATA[Nachtwind]]></dc:creator><pubDate>Thu, 08 Mar 2007 19:41:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit einer Funktion on Thu, 08 Mar 2007 20:02:21 GMT]]></title><description><![CDATA[<p>Wenn der Server &quot;einfriert&quot; hat dies i.d.R. nix mit Deiner Applikation zu tun, sondern eher mit einem Treiber bzw. der Hardware...</p>
<p>Mach doch einen Full-Memory-Dump, dann kannst Du debuggen wer wo hängt... (oder nimm einen Remote-Debugger)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241933</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 08 Mar 2007 20:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit einer Funktion on Thu, 08 Mar 2007 20:13:56 GMT]]></title><description><![CDATA[<p>hm, der server haengt bisher auf 6 verschiedenen Rechnerkonfigurationen weshalb ich das mal ausgeschlossen hatte.. nen memorydump waere jedoche eine interessante idee :0)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241939</guid><dc:creator><![CDATA[Nachtwind]]></dc:creator><pubDate>Thu, 08 Mar 2007 20:13:56 GMT</pubDate></item></channel></rss>