注册 登录
编程论坛 Delphi论坛

一段简单的udp聊天室代码

发布于 2008-05-29 21:46, 2681 次点击
一段简单的udp聊天室代码
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdUDPServer, IdBaseComponent, IdComponent,
  IdUDPBase, IdUDPClient,IdSocketHandle, ComCtrls;

type
  tcommblock=record
    sendername,msg:string[100];
    nowstr:string[20];
    end;


  TForm1 = class(TForm)
    Edit1: TLabeledEdit;
    Edit2: TLabeledEdit;
    Edit3: TLabeledEdit;
    Edit4: TLabeledEdit;
    bitset: TButton;
    inputbox: TEdit;
    bitsend: TButton;
    IdUDPClient1: TIdUDPClient;
    IdUDPServer1: TIdUDPServer;
    chatlog: TRichEdit;
    procedure bitsetClick(Sender: TObject);
    procedure bitsendClick(Sender: TObject);
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure  show(comm:tcommblock;devicename:trichedit);
begin
      with form1  do
         with devicename do
            begin
               chatlog.lines.add('('+comm.nowstr+')'+comm.sendername+':'+comm.msg);
            end;
end;


procedure TForm1.bitsetClick(Sender: TObject);
begin
idudpclient1.host:=edit1.Text;
idudpclient1.Port:=strtoint(edit2.Text);
idudpclient1.ReceiveTimeout:=5000;

idudpserver1.DefaultPort:=strtoint(edit3.Text);
idudpserver1.Active:=true;
bitsend.Enabled:=true;

end;

procedure TForm1.bitsendClick(Sender: TObject);
var
  comm:tcommblock;

begin
 comm.sendername:=edit4.Text;
 comm.msg:=inputbox.Text;
 comm.nowstr:=datetimetostr(now);
 show(comm,chatlog);

end;

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
 comm:tcommblock;
begin
 adata.ReadBuffer(comm,adata.Size);
 show(comm,chatlog);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
close;
end;

end.
退出时提示  estackoverflow
2 回复
#2
andyzlj2008-05-30 11:08
编译你的这个代码报错啊,兄弟,73和84都出现:too many actual parameters
1