<?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[IRC Klasse einbinden]]></title><description><![CDATA[<p>Hi @all,</p>
<p>ich bin gerade dabei eine IRC-Klasse einzubinden. Die Klasse hab ich von<br />
<a href="http://codeguru.earthweb.com/network/irc.html" rel="nofollow">http://codeguru.earthweb.com/network/irc.html</a><br />
Also mein Programm ist Dialogfeldbasierend. Ich lese die Serverdaten ein und übergebe sie an IrcSession.Connect() in der Hoffnung, das anschließend bei Start die Verbindung hergestellt wird.</p>
<pre><code class="language-cpp">CIrcIdentServer m_identServer;
	CIrcSession m_IrcSession;
	// Datenübergabe an irc
	m_IrcInfo.sServer = m_strServer;
	m_IrcInfo.iPort = m_iPort;
	m_IrcInfo.sNick = m_strNick;
	m_IrcInfo.sPassword = m_strPass;
	m_IrcSession.Connect(m_IrcInfo);
	m_identServer.Start(m_IrcInfo.sUserID.c_str());
</code></pre>
<p>Ich kann das aber leider nicht überprüfen, weil ich nicht weiß, wo ich den String der Serverantwort herbekomme. Es muß doch eine Funktion dafür geben.<br />
Ich dachte eigentlich an Listen() oder so.<br />
Aber in der Socket.cpp sieht das so aus.</p>
<pre><code class="language-cpp">bool Socket::Listen()
	{
	return listen(m_sock, 5) != SOCKET_ERROR;
	}
</code></pre>
<p>Ihr würdet mir sehr helfen, wenn mir einer sagen kann:<br />
1. Setze ich die Verbindung korrekt. Wenn nein, wie mach ich es richtig?<br />
2. In welcher Funktion/Klasse bekomme ich die Serverantwort?<br />
3. An welcher Funktion/Klasse muß ich die Strings für die Messages übergeben?</p>
<p>Vielen Dank an jedem, der sich die Mühe macht dieses Posting zu lesen. <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/65314/irc-klasse-einbinden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 01:43:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/65314.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Feb 2004 10:51:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to IRC Klasse einbinden on Wed, 18 Feb 2004 10:51:41 GMT]]></title><description><![CDATA[<p>Hi @all,</p>
<p>ich bin gerade dabei eine IRC-Klasse einzubinden. Die Klasse hab ich von<br />
<a href="http://codeguru.earthweb.com/network/irc.html" rel="nofollow">http://codeguru.earthweb.com/network/irc.html</a><br />
Also mein Programm ist Dialogfeldbasierend. Ich lese die Serverdaten ein und übergebe sie an IrcSession.Connect() in der Hoffnung, das anschließend bei Start die Verbindung hergestellt wird.</p>
<pre><code class="language-cpp">CIrcIdentServer m_identServer;
	CIrcSession m_IrcSession;
	// Datenübergabe an irc
	m_IrcInfo.sServer = m_strServer;
	m_IrcInfo.iPort = m_iPort;
	m_IrcInfo.sNick = m_strNick;
	m_IrcInfo.sPassword = m_strPass;
	m_IrcSession.Connect(m_IrcInfo);
	m_identServer.Start(m_IrcInfo.sUserID.c_str());
</code></pre>
<p>Ich kann das aber leider nicht überprüfen, weil ich nicht weiß, wo ich den String der Serverantwort herbekomme. Es muß doch eine Funktion dafür geben.<br />
Ich dachte eigentlich an Listen() oder so.<br />
Aber in der Socket.cpp sieht das so aus.</p>
<pre><code class="language-cpp">bool Socket::Listen()
	{
	return listen(m_sock, 5) != SOCKET_ERROR;
	}
</code></pre>
<p>Ihr würdet mir sehr helfen, wenn mir einer sagen kann:<br />
1. Setze ich die Verbindung korrekt. Wenn nein, wie mach ich es richtig?<br />
2. In welcher Funktion/Klasse bekomme ich die Serverantwort?<br />
3. An welcher Funktion/Klasse muß ich die Strings für die Messages übergeben?</p>
<p>Vielen Dank an jedem, der sich die Mühe macht dieses Posting zu lesen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/461903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461903</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Wed, 18 Feb 2004 10:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Wed, 18 Feb 2004 19:25:51 GMT]]></title><description><![CDATA[<p>**** mach aktuell ****</p>
]]></description><link>https://www.c-plusplus.net/forum/post/462492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/462492</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Wed, 18 Feb 2004 19:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Thu, 19 Feb 2004 04:44:46 GMT]]></title><description><![CDATA[<p>Hi !</p>
<p>Ok..es ist viel Quellcode, also, mal sehen ob ich Dir helfen kann, etwas Licht da rein zu<br />
bekommen.</p>
<p>Erstmal muss man ja mit nem Server connecten. Das passiert über Sockets. Das eigentliche Senden<br />
und Empfangen der Daten läuft auch über Sockets.</p>
<p>Der Wesentliche Verbindungsablauf ist, Socket erstellen:<br />
if( !m_socket.Create() ) throw &quot;Failed to create socket!&quot;; Wenns nicht geklappt hat,<br />
Excetpion-Throw.<br />
Wenns geklappt hat, Socket mit dem IRC-Server verbinden:<br />
if( !m_socket.Connect(addr) ) ;throw &quot;Failed to connect to host!&quot;;<br />
Wenn keine Verbindung zu Stande kommt, ebenfalls Exception-Throw.</p>
<p>Wenn bis hier alles glatt läuft, ist die Verbindung zum Server geglückt, jetzt wird<br />
der zweite Thread gestartet, mit:<br />
m_hThread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL)<br />
In diesem Threat empfängt das soeben erstellte und verbundene Socket die Nachrichten vom Irc-<br />
Server und den Usern.<br />
pThis-&gt;DoReceive(); Das Socket geht quasi in eine Art Thread-Empfangsscheife.</p>
<p>Jetzt werden Nick, Username, eventuell Passwort, der Computername, eventuell Ne Identd an<br />
den Irc-Server mit dem Send-Befehl über das Socket geschickt:<br />
m_socket.Send(&quot;PASS %s\r\n&quot;, info.sPassword.c_str());<br />
m_socket.Send(&quot;NICK %s\r\n&quot;, info.sNick.c_str());<br />
m_socket.Send(&quot;USER %s %s %s :%s\r\n&quot;,</p>
<p>Mehr oder weniger gleichzeitig wird ein zweites Socket, welches den Identd-Server darstellt,<br />
ins Leben gerufen: if( !m_socket.Create() ) return false;<br />
Das ist jetzt neu:</p>
<p>if( !m_socket.Bind(InetAddr(uiPort)) )<br />
{<br />
m_socket.Close();<br />
return false;<br />
}<br />
Das Socket wird an einen Port &quot;gebunden&quot;, den die Funktion InetAddr liefert. An diesem Port<br />
lauscht der Indend-Server auf eingehende Ident-Anfragen und beantwortet diese.<br />
Meistens der AUTH Port, nr 113.</p>
<p>Das versetzt den Identd Server in den &quot;Lauschmodus&quot;, um auf Identd Anfragen zu antworen<br />
bool Socket::Listen()<br />
{<br />
return listen(m_sock, 5) != SOCKET_ERROR;<br />
}</p>
<p>Das eigentliche Empfangen der Daten, läuft in der Funktion void CIrcSession::DoReceive() ab.</p>
<p>Achja, hätte ich fast vergessen...wenn ein Socket bereit ist Daten zu empfangen, wird die<br />
Funktion Accept ausgelöst.<br />
Naja, den Client-Server-Ablauf muss man mal selbst programmiert haben, um da richtig<br />
hinterzusteigen. Ist mit den MFC Klassen zum Beispiel gar nicht so schwer.<br />
Ich lasse das jetzt mal mit den Sockets...verweise an weiterführende Literatur, *g*,<br />
und &quot;sage&quot; mal noch ein paar Takte zu dem &quot;Rest&quot; des Quellcodes.</p>
<p>Ok, also die Verbindung steht....<br />
....wenn im Fenster zum Nachricht Senden die Return taste gedrückt wird,<br />
dann wird die Funktion OnIrcMessageEdited(WPARAM, LPARAM) der Klasse CTryIRC2View aufgerufen.<br />
In dieser tritt die Funktion GetWindowText(s) in Aktion, welche den vom User<br />
eingegebenen Text in der Variable s speichert.</p>
<p>Bevor dieser Text an das Anischt-Chatfenster und an den IRC-Server weiter-<br />
gegeben werden kann, muss dieser vorher noch geparst werden. (RFC 1459 -gerecht, möglichst)</p>
<p>Diese Aufgabe des Parsens übernimmt die Klasse CIrcMessage. An diese Klasse wird der eingegebene<br />
String weitergegeben. Die Memberfunktion ParseIrcCommand(const char* lpszCmdLine) erledigt das.</p>
<p>(Da darf ich gar nicht so genau hinsehen *schluck* ich hatte doch tatsächlich vor, so einen<br />
Parser selbst zu schreiben....naja...vielleicht wenn ich mal irdendann gaaaanz<br />
besoders viel Zeit haben sollte )</p>
<p>...jo...zurück zum Thema...ääääääh..achja...nun ist der vom User eingegebene String also<br />
geparst. Die Funktion gehrt nun zurück zu OnIrcMessageEdited(WPARAM, LPaRAM).</p>
<p>Der geparste Text wird jetzt per Stream-Input in das Objekt g_ircSession der Klasse<br />
CIrcSession geleitet.<br />
Das sagt diese Zeile aus: g_ircSession &lt;&lt; irc::CIrcMessage(s);<br />
SetWindowText(_T(&quot;&quot;)) löscht den eingegebenen Text in der Eingabezeile.</p>
<p>Die Klasse CIrcSession arbeitet in einem zweiten Thread und ist für die Verteilung der<br />
Nachtichten an die jeweiligen Ansichts-Chatfenster zuständig.</p>
<p>Für die Ansichts-Chatfenster sind wiederum die Klassen CIrcDefaultMonitor und CIrcMonitor zuständig.<br />
Das eigentliche Daten Senden und empfangen passiert in der Klasse Socket.<br />
Dorthin werden die Nachrichten geschleust und von dort auch geholt.</p>
<p>Boah ey ich fasse es nicht, habe ich mich jetzt &quot;festgelabert&quot; und dabei fast das Wesentliche<br />
aus den Augen verloren, Deine Fragen....also....</p>
<p>vom IRC kommende Nachrichten sind die Identd-Anfragen ( braucht man bei den meisten IRC<br />
Servern nicht unbedingt) und natürlich das Wichtigste, die Nachrichten von dem Irc-Server und<br />
den Usern.</p>
<p>void CIrcSession::DoReceive() empfängt diese.</p>
<p>Kannst Du z.B. mit nem AfxMessageBox(cbInBuf) abfangen und anzeigen lassen.</p>
<p>void CIrcSession::DoReceive() empfängt diese.</p>
<p>.....</p>
<p>chBuf[cbInBuf] = '\0';</p>
<p>AfxMessageBox(chBuf); &lt;------- eingefügt</p>
<p>char* pStart = chBuf;</p>
<p>.....</p>
<p>So und die ausgehenden Nachrichten kannst Du hier abfangen:</p>
<p>LRESULT CTryIRC2View::OnIrcMessageEdited(WPARAM, LPARAM)<br />
.....<br />
CString s;</p>
<p>AfxMessageBox(s); &lt;---- ne Möglichkeit, abfangen und Anzeigen lassen</p>
<p>m_wndUserText.GetWindowText(s);</p>
<p>if( s.GetLength() == 0 )<br />
return 0;</p>
<p>....</p>
<p>Soo...alle Klarheiten beseitig?? *g* Mit den Sockets hab ich mich etwas verhaspelt, aber vielleicht hilft es ja trotzdem ein bisschen weiter.</p>
<p>Tschüs, J<sup>o</sup>e</p>
]]></description><link>https://www.c-plusplus.net/forum/post/462733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/462733</guid><dc:creator><![CDATA[J^o^e]]></dc:creator><pubDate>Thu, 19 Feb 2004 04:44:46 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Thu, 19 Feb 2004 09:31:19 GMT]]></title><description><![CDATA[<p>Hi J<sup>o</sup>e,</p>
<p>das ist erstmal allerhand.<br />
Vielen Dank das Du dir die Mühe machst, es so genau zu erklären. <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>Ich hab jetzt erstmal ne Menge durchzuarbeiten.</p>
<p>Bis dahin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/462865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/462865</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Thu, 19 Feb 2004 09:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Thu, 19 Feb 2004 16:23:09 GMT]]></title><description><![CDATA[<p>Hi J<sup>o</sup>e,</p>
<p>ein paar Probleme hab ich noch.<br />
1. Ich wollte, wie Du beschrieben hast bei DoReceive() die Msg abfangen.<br />
Mit</p>
<pre><code class="language-cpp">AfxMessageBox(chBuf);
</code></pre>
<p>funktioniert das auch. Jetzt wollte ich die allerdings in meinem Editfeld anzeigen lassen.</p>
<pre><code class="language-cpp">CIrcClientDlg::m_cMsg.AddString(chBuf);
UpdateData(FALSE);
</code></pre>
<p>Der erkennt allerdings CIrcClientDlg nicht. Wenn ich die Header-Datei IrcClientDlg.h in die irc.h aufnehme gibt es 33 Fehler. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Was mach ich falsch? <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="😕"
    /></p>
<p>2. Ich habe CIrcSessinoInfo um sJoin erweitert um einen Chatraum zu eröffnen/beizutreten. Die übergebe ich mit</p>
<pre><code class="language-cpp">CString temp = &quot;/JOIN &quot;;
	temp = temp + m_IrcInfo.sJoin.c_str();	
	CIrcMessage::CIrcMessage(temp); // ist das Parsen so richtig???
	m_MySocket.Send(temp,sizeof(temp));
	temp = temp.Mid(1);
	m_cMsg.AddString(temp); // Dient der eigenen Anzeige
	UpdateData(TRUE);
</code></pre>
<p>ich bekomme aber keine Rückmeldung über DoReceive().<br />
3. Wenn ich das Programm verlassen will schließe ich das über meine Logout-Taste</p>
<pre><code class="language-cpp">m_IrcSession.Disconnect();
</code></pre>
<p>Dann beibt das Programm hängen. Wenn ich die Verbindung aufgebaut habe und über OnClose() das Programm beende, kommt ne Fehlermeldung, die zeigt das Disconnect noch aufgerufen wird.<br />
4. Warum antwortet das Progamm nicht auf nen ping, bzw wo baut man sowas ein?<br />
Ich denke, wenn ich Antworten auf die vier Fragen bekomme, sollte das Programm laufen. Drum bitte sagt mir was ich falsch mache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463030</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Thu, 19 Feb 2004 16:23:09 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Thu, 19 Feb 2004 15:40:45 GMT]]></title><description><![CDATA[<p>Letztes posting stark überarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463309</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Thu, 19 Feb 2004 15:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Thu, 19 Feb 2004 21:27:33 GMT]]></title><description><![CDATA[<p>Hallo !</p>
<p>Na, Du hast ja ne Menge vor, wie mir scheint !</p>
<p>Nimm mir bitte folgende Aussage nicht übel, aber:<br />
Hast Du Dir da nicht ein bisschen zuviel vorgenommen, wenn es schon beim<br />
Einbinden einer Headerdatei hapert ?</p>
<p>Die Klassen von Adi Degani beinhalten recht komplexe Programmiertechniken, wie z.B. das starten eines Threads, usw...</p>
<p>Wie stehtst Du zu dem Vorschlag, das Du erstmal selbst z.B. ein<br />
Dialogbasiertes, kleines Programm schreibst, das sich mit nem IRC-Server<br />
verbindet.<br />
Dann kannst Du sehr gut sehen, wie das mit den Sockets und der Verbindungs-Reihenfolge mit einem IRC-Server funktioniert (connect, accept, receive, usw.)</p>
<p>Die MFC-CAsyncSocket-Klasse bietet hierfür recht Komfortabel Funktionen an.<br />
Diesbezüglich helfe ich Dir gern weiter, aber mich weiterhin duch den Code-Dschungel von Adi Degani durchzuwurschteln, dazu fehlt mir jegliche Motivation.</p>
<p>Gruß, J<sup>o</sup>e</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463619</guid><dc:creator><![CDATA[J^o^e]]></dc:creator><pubDate>Thu, 19 Feb 2004 21:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 05:22:37 GMT]]></title><description><![CDATA[<p>Und Sockets werden im Buch VC++ 6 in 21 Tagen sehr gut erklärt. Such mal in der FAQ. Da gibt es den Link zum Online lésen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463749</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Fri, 20 Feb 2004 05:22:37 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 08:05:21 GMT]]></title><description><![CDATA[<p>Hi J<sup>o</sup>e,</p>
<p>ich wollte nicht dass der Eindruck erweckt wird, dass Du qasi das Programm für mich schreiben sollst. Ist ja auch gar nicht nötig, hat ja Adi Degani schon getan.<br />
Die Sock - Klasse aus VC++ 6 in 21 Tagen habe ich auch schon programmiert und kann das jetzt auch schon besser nachvollziehen.<br />
Wo mir wirklich was fehlt, ist das Verständnis wie ich externe Klassen einbinde und wie ich erkenne, wo ich diese Ansprechen muß.<br />
z.B. das Headerproblem. Mir ist total unverständlich warum ich meine IrcClientDlg.h nicht in die irc.h einbinden kann. Oder warum ich hin und wieder mit using namesspace irc arbeiten muß.<br />
Ein gutes Tutorial hierüber wäre nicht schlecht.<br />
Ich danke dir aber trotzdem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463799</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Fri, 20 Feb 2004 08:05:21 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 09:11:29 GMT]]></title><description><![CDATA[<p>Trikor schrieb:</p>
<blockquote>
<p>Mir ist total unverständlich warum ich meine IrcClientDlg.h nicht in die irc.h einbinden kann.</p>
</blockquote>
<p>Kannst du doch. Ich versuchs mal zu erklären.<br />
Also. Wenn du eine neue Klasse in deinem Projekt verwenden willst, musst du natürlich ersteinmal die Klassendefinitionsdatei (cpp-Datei) deinem Projekt hinzufügen (Projekt-&gt;Dem Projekt hinzufügen-&gt;Dateien) hinzufügen. Ist ja klar, dein Programm muss ja den Code der Klassen wissen.<br />
Die Headerdatei deiner Klasse musst du nicht hinzufügen (da du das ja immer im Code mit #include machst), wenn du sie aber hinzufügst, hat dies den Vorteil, dass deine Klasse in der Klassenliste erscheint und die Automatische Verfollständigung /bzw. Elemente Auflistung während dem Programmieren funktioniert.<br />
Die Klassenheaderdateien sind (normalerweise) mit einem Schutzmechanismus versehen, dass man sie nicht doppelt includieren kann:</p>
<pre><code class="language-cpp">#ifndef EINDEUTIGE_KONSTANTE // wenn das Symbol EINDEUTIGE_KONSTANTE noch nicht definiert ist, führe folgenden Code aus
#define EINDEUTIGE_KONSTANTE // definiere EINDEUTIGE_KONSTANTE

/* Die Deklaration der Klasse */
#endif // Code bis hier ausführen (falls EINDEUTIGE_KONSTANTE nicht definiert war)
</code></pre>
<p>Wenn du dein Projekt kompilierst, fügt der Compiler alle Dateien nacheinander (angefangen bei deiner &quot;Hauptdatei&quot;) zusammen.<br />
Da ja jede Headerdatei (durch den Schutzmechanismus) nur einmal eingebunden wird (sonst gäbs ein Compilerfehler), ist es egal, in welchen Dateien du die Klassenheader mit #include einbindest.<br />
Dh. du kannst auch 40 mal #include schreiben <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="😃"
    /></p>
<p>Hoffe ich konnte dir helfen.</p>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463853</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Fri, 20 Feb 2004 09:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 09:57:15 GMT]]></title><description><![CDATA[<p>Hi Rapha,</p>
<p>ich glaub, ich hab das noch nicht ganz verstanden.<br />
Ich habe die Headerdateien (irc.h socket.h CrossThreadsMessagingDevice.h) über Project / Dateien hinzugefügt.<br />
In meiner Hauptdlg habe ich jetzt</p>
<pre><code class="language-cpp">#ifndef _IRCCLIENTDLG_H 
#define _IRCCLIENTDLG_H

#if _MSC_VER &gt; 1000
#pragma once
#endif // _MSC_VER &gt; 1000
using namespace irc;
</code></pre>
<p>Aber jetzt erkennt die Klasse das using namespace irc nicht mehr.<br />
Und aus der irc.cpp kann ich immer noch nicht auf ircClientDlg zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463894</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Fri, 20 Feb 2004 09:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 10:01:48 GMT]]></title><description><![CDATA[<p>Huhu &quot;!!!&quot;</p>
<p>Schade, wollte grade Quellcode zusammenstellen, wie man nen IRC Server connecten kann....naja..egaaal.</p>
<p>Ok, Thema #include und namespace:</p>
<p>Dein #include Problem könnte dieses sein:<br />
Du hast zwei Klassen, Klasse A und Klasse B.<br />
Jetzt brauchst du in Klasse A das Objekt B und umgekehrt.</p>
<p>Da jetzt A von B abhängt und umgekehrt, kannst Du<br />
die benötigten Objekte als Zeiger deklarieren und<br />
fürs jeweils benötigte Objekt die Vorwärtsdeklaration benutzen.<br />
Ich schreibe mal ein Beispiel:</p>
<p>#include &quot;A.h&quot;</p>
<p>class B; //&lt;---- Vorwärtsdeklaration</p>
<p>class A<br />
{<br />
public:</p>
<p>private:<br />
B* m_b;<br />
};</p>
<p>#include &quot;B.h&quot;</p>
<p>class A; //&lt;---------- Vorwärtsdeklaration</p>
<p>class B<br />
{</p>
<p>public:</p>
<p>private:<br />
A* m_a;<br />
};</p>
<p>Also, mit Zeigern und den Vorwärtsdeklarationen funzt das <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>Ok, jetzt zu der Namespace-Geschichte;<br />
Namespace, ein Namensraum, wird benutzt, um Namenskonflikte zu<br />
vermeiden.<br />
Der arme Compiler weiss sonst gar nicht was er machen soll. *g*</p>
<p>// A.h<br />
.....<br />
void Bescheid()<br />
{<br />
AfxMesageBox(&quot;Ich bin in A.h deklariert&quot;);<br />
} .....</p>
<p>// B.h</p>
<p>....<br />
void Bescheid()<br />
{<br />
AfxMesageBox(&quot;Ich bin in B.h deklariert&quot;);<br />
}<br />
.....</p>
<p>// Hauptprogramm</p>
<p>#include &quot;A.h&quot;<br />
#include &quot;B.h&quot;</p>
<p>Bescheid() // welches Bescheid ??</p>
<p>// Ende Hauptprogramm</p>
<p>Um Namenskonflikte zu vermeiden, kann man diese Namespace-Geschichte<br />
Benutzen.</p>
<p>// A.h<br />
namespace A<br />
{<br />
void Bescheid<br />
{<br />
AfxMesageBox(&quot;Ich bin in A.h deklariert&quot;);<br />
}<br />
} // ende namespace</p>
<p>// B.h<br />
namespace B<br />
{<br />
void Bescheid()<br />
{<br />
AfxMesageBox(&quot;Ich bin in B.h deklariert&quot;);<br />
}<br />
}; // ende namespace</p>
<p>// Hauptprogramm</p>
<p>#include &quot;A.h&quot;<br />
#include &quot;B.h&quot;</p>
<p>...</p>
<p>using namespace A;<br />
Bescheid(); // Message-Box aus A.h wird aufgerufen<br />
...<br />
// Ende Hauptprogramm</p>
<p>Gruß, J<sup>o</sup>e</p>
]]></description><link>https://www.c-plusplus.net/forum/post/463901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/463901</guid><dc:creator><![CDATA[J^o^e]]></dc:creator><pubDate>Fri, 20 Feb 2004 10:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 13:01:34 GMT]]></title><description><![CDATA[<p>Hi J<sup>o</sup>e,</p>
<p>das hast Du wirklich klasse erklärt. Danke <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="😃"
    /></p>
<p>Wenn nicht schon 10 postings vorher wären, würd ich das für die FAQ´s empfehlen.<br />
Leider muß ich feststellen, das immer wenn ich ein Problem (beim Einbinden der<br />
Klassen von Adi Degani) gelöst habe, kommen zwei neue hinzu. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Deshalb versuche ich jetzt, wie Du sagtest mal nen IRC-Client selber zu programmieren. Hab ja schon einiges gelehrnt.<br />
Ich werd auf jeden Fall wissen lassen, wie es ausgeht.<br />
Wer weiß, vieleicht schreibe ich auch mal ein kleines Tutorial, wie man IRC in eine dialogbasierende Anwendung einbindet. Vorausgesetzt ich schaffe es. <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 />
Aber es gibt definitiv zu wenig Lektüre darüber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/464055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464055</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Fri, 20 Feb 2004 13:01:34 GMT</pubDate></item><item><title><![CDATA[Reply to IRC Klasse einbinden on Fri, 20 Feb 2004 13:20:15 GMT]]></title><description><![CDATA[<p>Super, das ist der richtige Weg und die richtige Einstellung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/464074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/464074</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Fri, 20 Feb 2004 13:20:15 GMT</pubDate></item></channel></rss>