Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Проблема с ICQ

Страницы: 1
Проблема с ICQ
Всем привет. У меня возникла маленькая проблема. Пишу сейчас программу с использованием ICQClient v 1.34. По идеи программа должна запускаться при старте системы и при выходе в интернет соединяться с сервером. Пытаюсь реализовать это так
Код
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ICQClient1.Disconnect then
begin
ICQClient1.Login();
end;
end

Но, к сожалению, этот код у меня даже не компилируется.
А что сообщает компилятор? Вообще, думаю, ошибка в ICQClient1.Disconnect Мне кажется это функция, а не свойство.
Достаточно будет подключаться по таймеру через определенный промежуток времени и проверять поле loggedin.
Думаю, самый правильный вариант будет отслеживание момента соединения. Тогда и проблем никаких не возникнет
А как отследить момент соединения с интернетом?
Я уже писал выше, что вам нужно сделать, что бы добиться результата. Если не понимаете сами, выложите сюда код, я его исправлю.
Игорь, спасибо. Вот мой код
Код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ICQClient, StdCtrls;
type
TForm1 = class(TForm)
  Memo1: TMemo;
  ICQClient1: TICQClient;
  Timer2: TTimer;
  procedure AddEvent(EventText : String);
  procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
  procedure Login;
  procedure Timer2Timer(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;
const
Crlf = Chr(13) + Chr(10);
var
Form1: TForm1;
Disconnect, NeedToConnectAgain, FullReloadContactList : Boolean;
T : TextFile;
implementation
{$R *.dfm}
procedure TForm1.AddEvent(EventText : String);
begin
EventText :=EventText;
if Memo1.Text = '' then
   Memo1.Text := EventText
else
  Memo1.Lines.Add(EventText);
end;
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
begin
AddEvent(''+ Msg +'');
end;
procedure TForm1.Login;
begin
ICQClient1.Login();
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if ICQClient1.Disconnect then
begin
ICQClient1.Login();
end;
end;
end.
Если я все правильно понял, то вот код, который Вам нужен
Код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ICQClient, StdCtrls;
type
TForm1 = class(TForm)
  Memo1: TMemo;
  ICQClient1: TICQClient;
  Timer2: TTimer;
  procedure AddEvent(EventText : String);
  procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
  procedure Login;
  procedure Timer2Timer(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;
const
Crlf = Chr(13) + Chr(10);
var
Form1: TForm1;
Disconnect, NeedToConnectAgain, FullReloadContactList : Boolean;
T : TextFile;
implementation
{$R *.dfm}
procedure TForm1.AddEvent(EventText : String);
begin
EventText :=EventText;
if Memo1.Text = '' then
   Memo1.Text := EventText
else
  Memo1.Lines.Add(EventText);
end;
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
begin
AddEvent(''+ Msg +'');
end;
procedure TForm1.Login;
begin
ICQClient1.Login();
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if not(ICQClient1.loggedIn) then ICQClient1.Login();
end;
end.

Интервал таймера можете поставить любой.
Спасибо большое. А еще вопрос, SendKeepAlive не нужен?
Если я ничего не путаю, то SendKeepAlive нужен для того, чтобы клиент не был отключен от сервера, а Вам сейчас это не нужно.
Понятно. Еще раз большое спасибо за помощь.
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)