Entwickler-Ecke
Internet / Netzwerk - CHAT: Nicknamen übermitteln...
Scrat - Mi 02.07.03 15:55
Titel: CHAT: Nicknamen übermitteln...
Hi,
ich habe folgendes mit meinem Chatprogramm vor:
Alle Nicknamen der Clienten, die sich mit dem Chat-Server verbinden lassen, sollen in einer Listbox angezeigt werden.
Das heißt:
Bei allen Chat-Clienten und beim Chat-Server sollen alle verbundenen Nicknamen angezeigt werden.
Nun die Frage....
Wie übermittel ich einen Nicknamen...
Bei meinem Chatprog. wird der Nickname in ein EDIT1 reingeschrieben.
Tino - Mi 02.07.03 16:14
Wie übermittelst du denn den Nachrichtentext?
Scrat - Mi 02.07.03 16:17
Ich benutze Serversocket und Clientsocket.
Und die Texte übersende ich mit:
SendText oder mit ReceiveText
MFG
Scrat
olliistmeinname - Mi 02.07.03 19:13
mach es doch so :
wenn du einen nick sendest:
Quelltext
1:
| clientsocket1.Socket.SendText('nick='+ edit1.text) |
wenn du Nachrichten sendest:
Quelltext
1:
| clientsocket1.Socket.SendText('message='+ edit1.text + ":" + edit2.text) |
edit1 ist das Feld in das man den nick eingibt.
edit2 it das Feld in das man die Nachrichten eingibt.
Jetzt musst du das noch auf dem Serverauswerten .
Tino - Do 03.07.03 10:00
| Scrat hat folgendes geschrieben: |
| Ich benutze Serversocket und Clientsocket. Und die Texte übersende ich mit: SendText oder mit ReceiveText |
Dann benutze doch genau diese Methoden um den Nickname zu senden.
Scrat - Do 03.07.03 10:27
Ok das geht....aber ich möchte jetzt auch noch das der 'Nickname' nach einer erfolgreichen Verbindung in einer Listbox eingetragen wird.
In dr Listbox sollen alle Nicknamen erscheinen die gerade mit dem Server verbunden sind.
Wenn ich jetzt also mit Sendtext den Nicknamen sende....dann muss ich ja bei allen anderen Verbundenen Clienten 'ReceiveText' angeben.
Aber mit Recive Text empfnage ich ja auch den normalen Text...und nicht nur den Nicknamen.
Wie kann ich diese beiden Werte trennen...mit 2 Sockets?
MaRiO - Di 08.07.03 15:11
Hallo Scrat !
Probier es mal so :
1. Diese Funktion in dein Server einbauen :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| function GetToken(aString, SepChar: string; TokenNum: Byte): string; var Token: string; StrLen: Byte; Num: Byte; EndofToken: Byte; begin StrLen := Length(aString); Num := 1; EndofToken := StrLen; while ((Num <= TokenNum) and (EndofToken <> 0)) do begin EndofToken := Pos(SepChar, aString); if EndofToken <> 0 then begin Token := Copy(aString, 1, EndofToken - 1); Delete(aString, 1, EndofToken); Inc(Num); end else Token := aString; end; if Num >= TokenNum then Result := Token else Result := ''; end; |
2. Deine Nachrichten schickst du dann im folgenden Format :
Quelltext
1:
| ClientSocket1.Socket.SendText('NickName'+'#'+Edit1.Text); |
Die Raute (#) ist zur Trennung des Nicknamens von der Eigentlichen Nachricht.
3. Wenn die Nachricht jetzt an deinem Server ankommt, kannst du Sie mit der Function Gettoken auseinander nehmen.
z.b. so :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Var NickName: String; Nachricht: String; S: String; Begin S:=Socket.Receiveln;
NickName:=Trim(Gettoken(S, '#' ,1)); Nachricht:=Trim(Gettoken(S, '#' ,2)); |
In der Variable Nickname steht jetzt der Nickname der Gesendet wurde und in der Variable Nachricht steht jetzt der Eingegebene Nachrichten Text.
4. NickName in die ListBox Adden.
Ich habe denn Quelltext nicht Getestet, aber er sollte Funktionieren.
Mfg
Mario :lol:
Scrat - Fr 11.07.03 13:14
Danke @ Mario,
das klappt so schon ganz gut. Nur der Nachteil ist:
Der Nickname wird immer wieder in die Listbox reingeschrieben, wenn eine Nachricht per Sendtext kommt...
Wie kann ich denn der Listbox sagen das sie die einzelnen Einträge überprüfen soll und wenn ein Eintrag mit dem Namen des Nicknamens übereinstimmt dieser dann nicht mehr in der Listbox geaddet werden soll?
MFG
Scrat
MaRiO - Fr 11.07.03 17:22
Hallo Scrat !
Z.b so :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Var i :=Integer; Begin For i:=ListBox1.Items.Count -1 Downto 0 Do Begin IF Trim(Lowercase(ListBox.Items[i])) = Trim(Lowercase(NickName)) Then Begin Exit; End Else Begin ListBox1.Items.Add(NickName); End; End; |
Ich hoffe Ich konnte dir Helfen. :D
Mfg
Mario
Moderiert von
Tino: Delphi-Tags hinzugefügt.
foxy - Mo 14.07.03 08:48
kurz und knappe antwort gebe ich dir
Beispieldateien unter Delphi
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!