<?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[CEdit und &amp;quot;tail&amp;quot;- Funktion]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe im Augenblick ein kleines Ideen-Problem:</p>
<p>Ich arbeite an einem Tool, das an einigen Ports lauscht und dort Verbindungen annimmt.<br />
Die Verbindung wird pro Port durch ein Thread &quot;überwacht&quot;.<br />
Alle Informationen, die bei einer Verbindung übertragen werden(plain Text) sollen in einer View dargestellt werden.<br />
Die Funktionalität soll dabei wie bei dem UNIX-Befehl tail funktionieren, d.h. die View soll automatisch scrollen.</p>
<p>Ich habe das ganze bis her über ein CEdit-Objekt gelöst, d.h.<br />
neue Daten -&gt; alten Inhalt sichern -&gt; neuen Inhalt anhängen -&gt; CEdit Text neu setzen -&gt; Scrollen</p>
<p>Das ganze würde auch ganz toll funktionieren, wenn nur ein Thread Nachrichten schreiben will.<br />
Es ist leider immer der Fall, dass nicht nur eine Verbindung besteht, sondern mehrere.<br />
Wenn nun zwei Threads &quot;gleichzeitig&quot; neue Nachrichten schreiben wollen, so werden oft Zeilen ausgelassen.<br />
Das Problem liegt in dem &quot;alte Daten sichern&quot;. Da jedes Thread eine temporäre Kopie des alten Inhalts macht und dort die neue Zeile anfügt, kann es bei gleichzeitigem Zugriff zum Überschreiben von neuen Inhalten kommen.</p>
<p>Leider steht ich im Augenblick voll auf dem Schlauch und weis nicht, wie ich dieses Problem beseitigen soll.</p>
<p>Ich habe das ganze schon mit einem locking-Mechanismus und Verzögerung versucht.<br />
Das Ergebnis war immer ein &quot;Dead-Lock&quot;.</p>
<p>Bin für jeden Tipp/Rat mehr als dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146944/cedit-und-quot-tail-quot-funktion</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 07:33:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146944.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 May 2006 09:23:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CEdit und &amp;quot;tail&amp;quot;- Funktion on Fri, 12 May 2006 09:23:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe im Augenblick ein kleines Ideen-Problem:</p>
<p>Ich arbeite an einem Tool, das an einigen Ports lauscht und dort Verbindungen annimmt.<br />
Die Verbindung wird pro Port durch ein Thread &quot;überwacht&quot;.<br />
Alle Informationen, die bei einer Verbindung übertragen werden(plain Text) sollen in einer View dargestellt werden.<br />
Die Funktionalität soll dabei wie bei dem UNIX-Befehl tail funktionieren, d.h. die View soll automatisch scrollen.</p>
<p>Ich habe das ganze bis her über ein CEdit-Objekt gelöst, d.h.<br />
neue Daten -&gt; alten Inhalt sichern -&gt; neuen Inhalt anhängen -&gt; CEdit Text neu setzen -&gt; Scrollen</p>
<p>Das ganze würde auch ganz toll funktionieren, wenn nur ein Thread Nachrichten schreiben will.<br />
Es ist leider immer der Fall, dass nicht nur eine Verbindung besteht, sondern mehrere.<br />
Wenn nun zwei Threads &quot;gleichzeitig&quot; neue Nachrichten schreiben wollen, so werden oft Zeilen ausgelassen.<br />
Das Problem liegt in dem &quot;alte Daten sichern&quot;. Da jedes Thread eine temporäre Kopie des alten Inhalts macht und dort die neue Zeile anfügt, kann es bei gleichzeitigem Zugriff zum Überschreiben von neuen Inhalten kommen.</p>
<p>Leider steht ich im Augenblick voll auf dem Schlauch und weis nicht, wie ich dieses Problem beseitigen soll.</p>
<p>Ich habe das ganze schon mit einem locking-Mechanismus und Verzögerung versucht.<br />
Das Ergebnis war immer ein &quot;Dead-Lock&quot;.</p>
<p>Bin für jeden Tipp/Rat mehr als dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056260</guid><dc:creator><![CDATA[SledgeIT]]></dc:creator><pubDate>Fri, 12 May 2006 09:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to CEdit und &amp;quot;tail&amp;quot;- Funktion on Fri, 12 May 2006 09:50:36 GMT]]></title><description><![CDATA[<p>Erstens sollte es sowieso nur einen Thread geben, der dein Anzeigefenster steuern darf. Alle anderen Threads können gerne interne Variablen mit Werten füllen und den GUI-Thread darauf hinweisen, daß etwas passiert ist.</p>
<p>Und zweitens solltest du <strong>UNBEDINGT</strong> verhindern, daß mehrere Threads gleichzeitig die Daten ändern können (dazu brauchst du eine CLock (evt. auch ein CMutex) Variable im Programm, die jeder Thread vor dem Schreiben für sich reserviert und hinterher wieder freigibt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1056296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1056296</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 12 May 2006 09:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to CEdit und &amp;quot;tail&amp;quot;- Funktion on Sat, 13 May 2006 22:04:06 GMT]]></title><description><![CDATA[<p>Erstell in deiner Anzeigenklasse Dlg eine Funktion zum Anzeigen des Textes, dann Sendest Du mit SendMessage den Anzuzeigenden Text an den Dialog. Fertig!</p>
<pre><code class="language-cpp">BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
	//{{AFX_MSG_MAP(CXXXDlg)
	...
	//}}AFX_MSG_MAP
	ON_MESSAGE(UM_Print, OnPrint)
END_MESSAGE_MAP()

LRESULT CXXXDlg::OnPrint(WPARAM wParam, LPARAM lParam)
{
    //in lParam sollte der Zeiger auf den Text stehen
    //Hier dann Printen
    return 0;
}

im Thread:
CString Text;
SendMessage(hWnd,UM_Print,(LPARAM)(LPCTSTR)Text);
</code></pre>
<p>Du solltest nicht Vergessen UM_Print</p>
<p>in stdafx.h zum Bsp.<br />
#define UM_Print (WM_USER+1)</p>
<p>zu definieren, und jedem Thread das Handle auf den Dialog mit zu geben.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057324</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Sat, 13 May 2006 22:04:06 GMT</pubDate></item></channel></rss>