Thema: Delphi kleines chatprog

Einzelnen Beitrag anzeigen

yoshie

Registriert seit: 8. Dez 2002
55 Beiträge
 
#1

kleines chatprog

  Alt 6. Feb 2003, 11:53
hi leute,

ich hätt da mal ein frage, ich arbete an einem kleinen chatprogramm und komme an einer stelle nciht weiter. Hier ist erstmal der quellcode von dem was ich bisher habe:


Client:

Code:

unit UClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  Thauptfenster = class(TForm)
    cs: TClientSocket;
    Memo1: TMemo;
    Button1: TButton;
    text: TEdit;
    ListBox1: TListBox;
    Button2: TButton;
    ip: TEdit;
    nick: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure csRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen } 
  public
  name:string;
  end;

var
  hauptfenster: Thauptfenster;

implementation

{$R *.dfm} 

procedure Thauptfenster.FormCreate(Sender: TObject);
begin
           cs.Port:=2003;            // Festlegung des Ports
           cs.host:=ip.text;
end;


procedure Thauptfenster.Button2Click(Sender: TObject);
var name:string;
begin
cs.Active:=true;        // Aufbau der Verbindung
name:=nick.text;        //nickname in variable speichern
end;


procedure Thauptfenster.Button1Click(Sender: TObject);
begin

          if cs.Socket.Connected=true then     // wenn Verbindung besteht,
          cs.Socket.SendText(text.text);         // sendet er den text

end;


procedure Thauptfenster.csRead(Sender: TObject; Socket: TCustomWinSocket);

   var rec:String;
         begin
         rec:=socket.ReceiveText;     // der empfangene Text wird in die Variable 'rec' geschrieben
         Memo1.Lines.Add(rec);        // Ausgabe der Variable 'rec'

end;



end.
und der Quelltext von der serveranwendung

Server:

Code:

unit UServer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ss: TServerSocket;
    Memo1: TMemo;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure ssClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure ssClientConnect(Sender: TObject; Socket: TCustomWinSocket);

  private
    { Private-Deklarationen } 
  public
    rec:String;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject);
begin
           ss.Port:=2003;            // Festlegung des Ports
           ss.Active:=true;        // Aktivierung der ServerSocket
end;

procedure TForm1.ssClientRead(Sender: TObject; Socket: TCustomWinSocket);

var
  i: Integer;
begin
  rec:=Socket.ReceiveText;             //Empfangene Text wird in eine Variable geschrieben
  for i := 0 to ss.Socket.ActiveConnections -1 do
  begin
    ss.socket.Connections[i].SendText(rec);     //Server sendet Text an alle Clients
  end;



  end;


procedure TForm1.ssClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
   var
  i: Integer;
  name:string;
  begin
 
  for i := 0 to ss.Socket.ActiveConnections -1 do
  begin
    ss.socket.Connections[i].SendText('Herzlich Willkommen im Chat');     //Server sendet Text an neu angemeldeten Clients
  end;
end;

end.
Nun mein Problem. Ich möchte nun das der user seinen nick eingibt, dann wird dieser beim connecten zum server geschickt und wieder an alle clients zurückgegeben. Am Ende soll es darauf hinauslaufen dass sämtliche eingeloggte user in eine Combobox bei der clientanwenduung zu sehen sind.
kann mir da jemand weiterhelfen? Also Wertegang von der nickeingabe bis zur ausgefülten combobox. Wäre sehr freundlich

cu yoshie[/delphi]
  Mit Zitat antworten Zitat