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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2012, 02:25   #1
Саня_
Пользователь
 
Регистрация: 05.03.2011
Сообщений: 36
По умолчанию Try Except

Пишу клиент-серверную программу. Возникает ошибка "Asynchronous socket error 10061". Долго и мучительно юзал просторы интернета, много чего читал и пробовал (в частности о "Try Except"). Но данным образом не получилось избежать возникновение ошибки.

Писал так:
Цитата:
try
Client.Open;
except
on ESocketError do
begin client.Address:='192.168.0.2'; //с этим адресом ошибка не возникает
edit1.text:='123'; end;
end;}
Client.Open;
Забил на этот способ, снова много читал и нашел следующий способ, которым собственно и решил пользоваться, так как с ним всё работает:

Цитата:
procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
if ErrorCode = 10061 then
begin
client.Address:='192.168.0.2';
Client.Open;
ErrorCode := 0;
end;
end;
Но в целях саморазвития мне все таки интересно узнать, как правильно сделать тем (Try Except) способом. Подскажите пожалуйста...
Саня_ вне форума Ответить с цитированием
Старый 15.10.2012, 07:52   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

компонент асинхронный потому и было создано это событие.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.10.2012, 22:33   #3
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
как правильно сделать тем (Try Except) способом
Код:
client.ClientType := ctBlocking;
..
try
 client.Open;
except
..
end;
Цитата:
решил пользоваться, так как с ним всё работает
Работает да не всё.

Код:
procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
if ErrorCode = 10061 then
begin
  ErrorCode := 0; 
  Socket.Close; // ЭТА строчка обязательна во избежание утечки ресурсов.
end;
end;

Последний раз редактировалось Stilet; 15.10.2012 в 23:07.
xoodoo вне форума Ответить с цитированием
Ответ


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