Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2009, 14:08   #1
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
Смущение Неясность с TICQClient.. Помогите :-[

Добрый день, уважаемые программисты! Я пишу ICQ-чат, используя компоненту TICQClient.. Бот в целом готов, но (!!!) если в моем чате общается около 10 человек, то бота выбивает из сети (в офф), т.е. при цикличной отправке всем пользователям онлайн, возможно, сервер не успевает обрабатывать запросы.. Пробовал юзать OnError и OnConnectionFailed, но мое «юзание» ни к чему не привело.. Хочу попытаться, что, если вдруг такая ситуация происходит с «перегрузом», то бот как бы переходит на другой уин, а тот номер тем временем будет «отдыхать».. Не знаете как можно избавиться от этого?

Заранее спасибо!
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 29.07.2009, 20:15   #2
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Нет никаких предложений? :'(
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 30.07.2009, 11:28   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Делай паузу в несколько секунд(например 5), тогда не должно выкидывать. Сервер может частые посылы воспринять как флуд. QIP массовые рассылки когда делает, совершает паузу между отправкой сообщения пользователям.
Alter вне форума Ответить с цитированием
Старый 30.07.2009, 12:07   #4
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Alter, а как сделать эту паузу в цикле на примере добавления в ListBox1 чисел от 0 до 10? (чтобы довлялись цифры какждые 5 сек)
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 30.07.2009, 13:00   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Либо таймер, либо Sleep. Но sleep морозит всю программу.
C таймером:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    ListBox1: TListBox;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var N :Integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 ListBox1.AddItem(IntToStr(N), Nil);
 if N=10 then Timer1.Enabled := False;
 Inc(N);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 N := 0;
 Timer1.Enabled := True;
 Timer1.Interval := 5000; // 5 Сек
end;

end.
Alter вне форума Ответить с цитированием
Старый 30.07.2009, 13:51   #6
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Спасибо, Alter, все на самом деле было очень просто %)..
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 30.07.2009, 15:00   #7
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Спасибо.. Сделал, что отправка идет списку онлайн через определенный интервал, но:
Код:
Часть из процедуры SendMsg(Msg, UIN: string);
    UINicq:=UIN;
    bodytext:='[' + TimeToStr(Now) + '] --> ' + nick + ': ' + Msg;
    numbn:=0;
    Timer1.Enabled:=True;
Код:
procedure TForm1.TimerTimer(Sender: TObject);
begin
Try
if UINicq = Online1.Items[numbn] then begin
inc(numbn);
end;
Form1.ICQ1.SendMessage(StrToInt(Online1.Items[numbn]), bodytext);
if numbn = Online1.Items.Count-1 then Timer.Enabled:=False;
Inc(numbn);
Except end;
end;
Тут получается, что если я напишу сначала "привет", а потом вслед "привету" добавлю "как дела", то всем пользователям онлайн будет рассылаться не "привет" с "как дела", а только последнее отправленное сообщение.. Нужно создавать таймера программно что ли? 0о
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 30.07.2009, 23:09   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Ещё так паузу можно делать:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Enabled := False;
 Timer1.Interval := 2000;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var I :Integer;
begin
   try
 for I:=0 to 10 do
 begin
    Timer1.Enabled := True;
   ListBox1.AddItem(IntToStr(I), Nil);
    while Timer1.Enabled do
     Application.ProcessMessages();
 end;
   finally
 Timer1.Enabled := False;
   end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Timer1.Enabled := False;
end;

end.
Alter вне форума Ответить с цитированием
Старый 31.07.2009, 12:58   #9
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Сделал и вторым случаем, который Вы мне подсказали, но по какой-то причине чат снова выбивает в офф
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 27.01.2010, 16:14   #10
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от m0dE^ Посмотреть сообщение
Сделал и вторым случаем, который Вы мне подсказали, но по какой-то причине чат снова выбивает в офф
Восстановил работу над проектом, но эту проблему так и не решил.. Может знает кто-нибудь или кто-то делал уже, то помогите, пожалуйста...
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TICQClient __@cmd@__ Компоненты Delphi 3 20.08.2009 16:03
свежий TIcqClient andrey4623 Софт 4 19.08.2009 17:22
Глюк TICQClient v1.33 Alter Общие вопросы Delphi 2 06.08.2008 18:36
TICQClient Xandr Работа с сетью в Delphi 11 04.07.2008 13:28
Проблемка с TIcqClient BlackOmen Работа с сетью в Delphi 6 02.03.2008 18:29