Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi LAN CHAT(Smileys, IP mitsenden...) (https://www.delphipraxis.net/68480-lan-chat-smileys-ip-mitsenden.html)

la.reunion 30. Apr 2006 11:39


LAN CHAT(Smileys, IP mitsenden...)
 
Hallo,
Ich bin gerade dabei einen Chat mithilfe von Sockets zu programmieren.
Soweit funktioniert er auch, bis jetzt besitzt er aber nur die grundfunktion von Text verschicken und den gesamten Chat zu protokollieren.
Mein erstes Problem ist, dass an den Server gesendet werden soll welche IPs alle eingeloggt sind und welchen Nick diese haben.
Mein zweites Problem ist, dass ich nicht weiß wie ich das anstellen kann, das jeder user sihc eine farbe aussuchen kann.
Und drittens weiß cih nciht wie ich smilies in dem chat realisieren kann...

Sorry für die vielen Fragen aber bei den drei Themen weiß ich nciht weiter.

Danke für eure Hilfe
Lg La.Reunion

fkerber 30. Apr 2006 11:45

Re: LAN CHAT(Smileys, IP mitsenden...)
 
Hallo!

... und herzlich Willkommen in der DP!

Vorneweg eine Frage:
Handelt es sich um einen zentralen Chat? (also 1 Server, x Clients) oder "nur" 1 on 1?

Zur Farbe:
Du weißt doch bestimmt, von wem die Nachricht kommt oder? Dann musst du nur wissen, in welcher Farbe derjenige schreibt - am einfachsten definierst du dir gewisse Schlüsselwörter (z.B. ChangeColor: UserX red) und wenn dein Chat eine solche Zeile empfängt, dann wird sie nicht ausgegeben, sondern entsprechend verarbeitet, sodass alle Messages von UserX jetzt rot werden.

Zum Smilie:
Es gibt RichEdits, die auch Bilder darstellen können (TXRichedit glaub ich). Such mal hier im Forum nach Richedit Bilder oder so.
Die Icons überträgst du auch als text (z.B. :smile: oder :anger:) und dann ersetzt du sie bei der Ausgabe...


Ciao Frederic

la.reunion 30. Apr 2006 11:50

Re: LAN CHAT(Smileys, IP mitsenden...)
 
Danke für deine Antwort,
Es handelt sich um 1 Server und x Clients.
Wenn Ich anstelle eines Memo-Fensters ein Richedit nehm kommt gleich ein Fehler.

Könntest du mir das mit dem Definieren von den Farben genauer erklären ?
Danke

Lg La.Reunion

PS:. Ich habe es nach einem vorhandenen Tutorial gemacht, das man auch hier in DP runterladen kann.

fkerber 30. Apr 2006 11:52

Re: LAN CHAT(Smileys, IP mitsenden...)
 
Hi!

Du kannst das jetzt nicht so einfach austauschen. Wie gesagt, such mal hier nach der richtigen Komponente.
Wenn mich nicht alles täuscht, gibt es hier auch noch ein Tutorial von mir, dass den Aufbau eines Texteditors mit Hilfe eines RichEdits zeigt, das könnte dir dann weiterhelfen.

Beim zentralen Server solltest du dann sozusagen eine Liste haben, welcher User, welche Farbe hat und es dann dementsprechend an die Clients weiterleiten.
Wie sieht denn im Moment das weiterleiten an die Clients aus (Code)?


Ciao Frederic

la.reunion 30. Apr 2006 11:55

Re: LAN CHAT(Smileys, IP mitsenden...)
 
Okay, werde mich einaml ein bisschen schlau mahcen über richedits....

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (ClientSocket1.Active=true) and (Edit1.Text<>'') then
ClientSocket1.socket.SendText(Nickname+': '+Edit1.Text);
Edit1.Text := '';
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Show;
Memo1.Lines.Add(Socket.ReceiveText)
end;
Hier der Auszug aus meinem Client.

Lg La.Reunion

fkerber 30. Apr 2006 12:04

Re: LAN CHAT(Smileys, IP mitsenden...)
 
Hi!

Kenne mich bezgl. der Sockets jetzt nicht so super aus - aber wie ermöglichst du so mehrere Clients und schaffst es, dass alle Clients alles mitbekommen?


Ciao Frederic

Zacherl 30. Apr 2006 13:07

Re: LAN CHAT(Smileys, IP mitsenden...)
 
Das Prinzip ist ja folgendes

Code:
Client
|  /\
|  |
\/ |
Server ----> Client
|
|
\/
Client
Der Server empfängt einen Text von einem Client und sendet diesen an alle Clients weiter.

Florian

PS: Auf www.lanchat2.de arbeiten drei Leute an einem LanChat. Unter Anderem ist auch ein Client von mir dabei. Das Projekt ist OpenSource. Guck dir einfach mal den Quelltext an, um zu sehen, wie wir das z.B. mit Smilies geregelt haben. Für Socket Probleme ist dies nichts, da der Chat über UDP läuft.

la.reunion 30. Apr 2006 13:25

Re: LAN CHAT(Smileys, IP mitsenden...)
 
danke für eure Antworten werde mr mal den Quelltext anschauen.

Lg La.reunion

la.reunion 30. Apr 2006 14:01

Re: LAN CHAT(Smileys, IP mitsenden...)
 
echt cooler Chat nur wo ist da der code für die smileys den hab ich noch nicht gefunden.


Lg La.Reunion

Sko 30. Apr 2006 15:14

Re: LAN CHAT(Smileys, IP mitsenden...)
 
In meinem Chat füge ich die Smilies so ein:

Delphi-Quellcode:
procedure TMainForm.BildEinfuegen(var Bilder: TImageList; const ImageIndex: integer);
var
  bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    Bilder.GetBitmap(ImageIndex,Bitmap);
    REEmpfangen.InsertGraphic(Bitmap,false);
    with REEmpfangen.GetSelection do REEmpfangen.SetSelection(cpMin + 1, cpMin + 1, False);
  finally
    bitmap.Free;
  end;
end;

procedure TMainForm.SucheSmiley(const Smiley: string; ImageIndex: integer; Liste: TImageList);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
with REEmpfangen do
  begin
    if SelLength <> 0 then StartPos := SelStart + SelLength
    else StartPos := 0;
    ToEnd := Length(Text) - StartPos;
    FoundAt := FindText(Smiley, StartPos, ToEnd, []);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(Smiley);
      BildEinfuegen(Liste, ImageIndex);
    end;
  end;
end;
Der Code ist nicht von mir, ich hab ihn nur etwas angepasst.

REEmpfangen ist dabei ein "JvRichEdit" aus der Jvcl

Der Smiley ist wird dabei als Text in der Nachricht versendet, also z.B. *lach* für :-D

EDIT:
Zitat:

Zitat von la.reunion
Mein zweites Problem ist, dass ich nicht weiß wie ich das anstellen kann, das jeder user sihc eine farbe aussuchen

Dafür gehen jbg´s Implode-Explode-Funktionen eigentlich ganz gut, da kannst du dir ein schönes "Nachrichtenprotokoll" zusammenbauen, wo du dann z. B. auch Schriftart, -größe und -farbe und sonst was mit einbauen kannst


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz