15.08.2011, 17:37
|
Прохожий
|
|
Регистрация: 15.08.2011
Сообщения: 23
Репутация: -1316
|
|
QMessenger
Здравствуйте я недавно начал заниматься програмированиев в дельфи вот хотел зделать чач через нитернет ознакомилмя с языком и инди но не получается выполнит ь передачу сообщения Delphi7 Indy9 Рууки проде не кривые
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, IdTCPConnection, IdTCPClient, IdTelnet, idFTP, Menus,
OleCtrls, SHDocVw, IdBaseComponent, IdComponent, jpeg;
var
s : String;
key : Char;
i : integer;
s1 : String;
type
TForm2 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
edtMsg: TEdit;
Button1: TButton;
Label1: TLabel;
N5: TMenuItem;
Client: TIdTCPClient;
edtPort: TEdit;
edHost: TEdit;
timer1: TTimer;
memMsgs: TMemo;
lbl1: TLabel;
img1: TImage;
img2: TImage;
procedure SendClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure img1Click(Sender: TObject);
procedure img2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit4, Unit3;
{$R *.dfm}
procedure TForm2.SendClick(Sender: TObject);//Переход
begin
form2.hide;
form1.show;
end;
procedure TForm2.Button1Click(Sender: TObject); //Посылка сообщения
begin
if Key = #13 then
begin
s := edtMsg.Text + #10#13;
Key := #0;
edtMsg.Text := '';
Client.WriteBuffer(s[1], Length(s));
end;
end;
procedure TForm2.N2Click(Sender: TObject); //Переходы
begin
form1.hide;
form3.show;
end;
procedure TForm2.N3Click(Sender: TObject); //Выход из придлжения
begin
Application.Terminate;
end;
procedure TForm2.N5Click(Sender: TObject);//Логин + провекска статуса
begin
if Client.Connected then
Client.Disconnect
else
begin
Client.Host := edhost.text;
Client.Port := StrToIntDef(edtPort.Text, 8800);
edtPort.Text := IntToStr(Client.Port);
memMsgs.Lines.Clear;
Client.Connect;
end;
begin
if Client.Connected = True then
lbl1.Caption := 'Онлайн';
if Client.Connected = False then
lbl1.Caption := 'Оффлайн';
if Client.Connected = False then
Application.MessageBox('Связь с сервером QMessenger потеряна вам не будут приходть сообщения и вы не можете их писать ',
'Внимание!!!!', MB_OK + MB_ICONSTOP + MB_DEFBUTTON2);
end;
end;
procedure TForm2.timer1Timer(Sender: TObject);//Таймер
begin
if not Client.Connected then
exit;
I := 150;
if I > 0 then
begin
SetLength(s, i);
Client.ReadBuffer(s[1], i);
memMsgs.Lines.add(Copy(s, 1, Length(s) -2));
end;
end;
procedure TForm2.FormCreate(Sender: TObject);//Статус логина
begin
Form2.Caption := 'QMessenger - ' + Form1.login.Text + ' logged in!';
memMsgs.Lines.Clear;
edtMsg.Text := '';
if not Client.Connected then
exit;
end;
procedure TForm2.img1Click(Sender: TObject);//Смайлы
begin
edtMsg.Text:= edtMsg.Text + ':)';
end;
procedure TForm2.img2Click(Sender: TObject);
begin
edtMsg.Text:= edtMsg.Text + ':(';
end;
end. //Конец
Также после нажатия войти тоесть включения
Код:
Client.Host := edhost.text;
Client.Port := StrToIntDef(edtPort.Text, 8800);
edtPort.Text := IntToStr(Client.Port);
memMsgs.Lines.Clear;
Client.Connect;
Програма зависает что делать помогите!
|