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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 00:47   #1
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию ClientSocket в приложении без формы

Привет всем! Есть такая задача: клиент постоянно конектится к серверу, но сервер большую часть времени в оффлайн. Так что надо обработать ошибки коннекта (10061). В приложениях с формой делал это так:
Код:
procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
но формы нет. Пробовал так:
Код:
procedure CSError(Sender: TObject;Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
var
  CS: TClientSocket;
begin
CS:=TClientSocket.Create(nil);
@CS.OnError:=@CSError;
Код ошибки получаю, но изменить естественно не могу. Как поступить?
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 25.11.2009, 13:15   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

немного не понял, почему не...
Код:
CS.OnError:= CSError;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 25.11.2009, 16:18   #3
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

CS.OnError - тип TSocketNotifyEvent, а CSError - процедура. Так что передаю по адресам. Иначе даже не компильнется.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 25.11.2009, 17:32   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

если загнать в класс, то компильнется
Вложения
Тип файла: zip sv.zip (3.8 Кб, 26 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 25.11.2009, 17:34   #5
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Код:
type
  TCSEvents = class
    class procedure CSError(Sender: TObject;Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
  end; 

class procedure TCSEvents.CSError(Sender: TObject;Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode:=0;
end;

begin
CS:=TClientSocket.Create(nil);
CS.OnError:=TCSEvents.CSError;
end.
Сам разобрался. Вот так должно быть.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 25.11.2009, 17:48   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ну вот видите
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка сообщений в приложении без окон. kalexi Win Api 2 26.06.2009 20:12
две формы в одном приложении.. AXEnic Общие вопросы Delphi 6 22.04.2009 16:52
Закрытие формы MDIChild в MDI приложении Avalonix Общие вопросы Delphi 4 29.05.2008 16:45
Как использовать две формы в одном приложении SeRhy Общие вопросы Delphi 6 23.01.2008 21:42
Server & ClientSocket как без ip delphin100 Работа с сетью в Delphi 20 16.01.2008 17:12