Hallo,
ich bin zur Übung an einem Chatprogramm dran! Nun kann man sich das ganze so vorstellen:
1)Der User wird aufgefordert einen Usernamen, eine Chatfarbe(mit colordialog), den Host und den Port auszuwählen. (Über TServerSocket und TClientSocket) // Bitte nicht sagen ich soll die
Indy's benutzen! ;D
2)Sofern die Verbindung geklappt hat wird man auf die 2te Seite des Tabsheeds weitergelassen.
Dort findet man oben eine Richbox(Protokoll(wo die User drin chatten)), ein Memo zum senden von Nachrichten und wichtig noch der Sende Button!
3) Im Memo (da wo man die Nachricht eintippt) ist nun die Schriftfarbe zusehen die man auf Seite 1 im colordialog ausgewählt hat!
4) Per Attribute habe ich nun die Farbe auch in der Richbox (da wo die Messages gesendet werden) in der Farbe wo man ausgewählt hat!
Problem?
Ich konnte nur clientseitig die Farben ändern:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
with richedit1.selattributes do
begin
if strtoint(memo2.Text) <> 0 then
richedit1.SelAttributes.Style := [fsBold];
client.socket.SendText(inttostr(colordialoguser.color) + editusername.text + ' -> ' + memo2.text);
memo2.Clear;
end;
end;
Wie man sieht wird über diese Zeile: (client.socket.SendText(inttostr(colordialoguser.c olor) + editusername.text + ' -> ' + memo2.text)
ja was an denn Server gesendet. Nämlich 3 Strings!
1 String: Farbe(Coolodialoguser.color)
2 String: Username(editusername.text)
3 String: Nachricht(memo2.text)
--------------------------------------------
So das sollte ja so klappen (also das die Strings so an den Server gesendet werden!)
Nun zum Problem (das nämlich beim Server liegt der den String aufteilen soll und die Farbe ect. erkennen soll)
Code:
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
Nachricht: AnsiString;
sTeilen: String;
aColor: TColor;
begin
with richeditmaster.selattributes do
begin
Nachricht:= Socket.ReceiveText;
sTeilen := copy(Nachricht, 1,3);
aColor := TColor(StrToInt(sTeilen));
RicheditMaster.Lines.Add(Nachricht);
for i := 0 to server.Socket.ActiveConnections - 1 do
server.socket.Connections[i].SendText(Nachricht);
end;
end;
end.
Bin Anfänger! Kann mir da jemand helfen ? Ich weiß nicht ganz wie ich das jetzt genau machen muss, dass die Farbe dem User zugeordnet wird und mitgesendet wird + den Username und eben der Nachricht!
Wäre echt super wenn jemand das direkt lösen könnte mit copy o.ä
Vielen Dank im vorraus!