Autor Beitrag
Scrat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: Mi 02.07.03 15:55 
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.

_________________
Wenn ein Programm nutzlos ist, muß es dokumentiert werden.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 02.07.03 16:14 
Wie übermittelst du denn den Nachrichtentext?
Scrat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: Mi 02.07.03 16:17 
Ich benutze Serversocket und Clientsocket.

Und die Texte übersende ich mit:
SendText oder mit ReceiveText

MFG
Scrat

_________________
Wenn ein Programm nutzlos ist, muß es dokumentiert werden.
olliistmeinname
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Mi 02.07.03 19:13 
mach es doch so :

wenn du einen nick sendest:
ausblenden Quelltext
1:
clientsocket1.Socket.SendText('nick='+ edit1.text)					


wenn du Nachrichten sendest:
ausblenden 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 .

_________________
Olliistmeinname und bin da für jede Dame
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: 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?

_________________
Wenn ein Programm nutzlos ist, muß es dokumentiert werden.
MaRiO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Windows XP
D7 Prof.
BeitragVerfasst: Di 08.07.03 15:11 
Hallo Scrat !

Probier es mal so :

1. Diese Funktion in dein Server einbauen :

ausblenden 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 :

ausblenden 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 :

ausblenden 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:

_________________
Application.MessageBox('Delphi ist Cool', 'Delphi 7', 1);
Scrat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 73



BeitragVerfasst: 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

_________________
Wenn ein Programm nutzlos ist, muß es dokumentiert werden.
MaRiO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Windows XP
D7 Prof.
BeitragVerfasst: Fr 11.07.03 17:22 
Hallo Scrat !

Z.b so :
ausblenden 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 user profile iconTino: Delphi-Tags hinzugefügt.

_________________
Application.MessageBox('Delphi ist Cool', 'Delphi 7', 1);
foxy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 814

Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
BeitragVerfasst: Mo 14.07.03 08:48 
kurz und knappe antwort gebe ich dir

Beispieldateien unter Delphi

_________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)