Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как избавиться от сообщений об ошибках? Обработка исключительных ситуаций 
:(
    Опции темы
Alexzz
Дата 27.7.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Осваиваю связь через Tserversocket и Tclientsocket. Если например пытаться соединиться с другим компом, но там в тот момент не запущена программа, то возникает ошибка. Ну это нормально. Не нормально то, что прога при этом выдаёт мессагу об ошибке сокета. Формы try - except не помогают, так как соединение очевидно обрабатывается в другом потоке, который автоматически создаётся. У компонентов есть событие onError, если я прописываю туда обработчик, то выполняется и он, и затем всё равно выдаётся мессага.

Вопрос - как избавиться от сообщений об ошибках?
PM WWW ICQ MSN   Вверх
VICTAR
Дата 27.7.2008, 21:48 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Какая ошибка? 
В onError помогает Error := 0
ps для таких вопросов есть раздел Сети
PM MAIL   Вверх
Alexzz
Дата 27.7.2008, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



VICTAR, вопрос не по ошибке, с ней всё понятно - если не с кем соединяться, то возникает ошибка. Вопрос о том, что-бы сделать обработчик ошибок и не бегать к компу жать на ок по каждой проблеме.

Процедуре обработки ошибки передаётся переменная ErrorCode. Ты её имел в виду? Или именно Error?

Ща попробую.

з.ы. вопрос то не по сетям а по обработке ошибок.

Добавлено через 6 минут и 33 секунды
Ура!!! Огромное спасибо!

ErrorCode:=0; в обработчике решило проблему.

Это сообщение отредактировал(а) Alexzz - 27.7.2008, 22:32
PM WWW ICQ MSN   Вверх
Dobermann
Дата 4.12.2008, 22:11 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Не стал новую тему создавать.
Чёт с EConvertError неполучается...
Как сделать, чтобы в эдит нельзя было буквы вводить??? Всмысле как обработать эту ошибку?!
У меня на эдите strtoint стоит, т.е. нужно чтобы выскакивало не системное сообщение, а мое!
PM   Вверх
Christoph
Дата 4.12.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



А так нельзя?

Код

Try
 ...
  except 
    on EConvertError Do
      begin
       ...\\ Обработка ошибки
      end;



--------------------
user posted image
PM MAIL ICQ   Вверх
Dobermann
Дата 4.12.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Код

try 
strtoint(edit1.text)
except
 on e: EConvertError do
   begin
     showmessage(e.message+ ' asdf')
   end;
end; 

Сперва вылетает мое сообщение, а затем все равно системное...
PM   Вверх
Christoph
Дата 4.12.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



В такой ситуации не может вылетать ошибка, просто ты запустил под отладкой Ф9 нажал, а ты скомпиль и запусти отдельно ехе, все работает  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
MetalFan
Дата 4.12.2008, 23:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



1. Пользуй TryStrToInt.
2. Для разрешения ввода только цифр в едит установить стиль ES_NUMBER


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Dobermann
Дата 4.12.2008, 23:29 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(Christoph @  4.12.2008,  23:15 Найти цитируемый пост)
В такой ситуации не может вылетать ошибка, просто ты запустил под отладкой Ф9 нажал, а ты скомпиль и запусти отдельно ехе, все работает  

И даже в скомпилинной тоже вылетает! =(
Цитата

'' is not a valid integer value

Цитата(MetalFan @  4.12.2008,  23:15 Найти цитируемый пост)
1. Пользуй TryStrToInt.

А как его правильно в моем случае использовать???
Цитата(MetalFan @  4.12.2008,  23:15 Найти цитируемый пост)
2. Для разрешения ввода только цифр в едит установить стиль ES_NUMBER

Чёт не нашел такого значения у свойств...
PM   Вверх
Exai1e
Дата 4.12.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 2
Всего: 30



Dobermann
Цитата(Dobermann @  5.12.2008,  00:29 Найти цитируемый пост)
А как его правильно в моем случае использовать???

кнопка ф1 на клаве отсутствует ?
http://delphi.about.com/library/rtl/blrtlTryStrToInt.htm

Добавлено @ 23:45
Цитата(Dobermann @  5.12.2008,  00:29 Найти цитируемый пост)
Чёт не нашел такого значения у свойств... 

Код

var defs: Dword;
  defs := GetWindowLong(edtSearch.Handle, GWL_STYLE);
  SetWindowLong(edtSearch.Handle, GWL_STYLE, defs or ES_NUMBER);


Это сообщение отредактировал(а) Exai1e - 4.12.2008, 23:46


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
THandle
Дата 4.12.2008, 23:46 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Цитата(Dobermann @  4.12.2008,  23:29 Найти цитируемый пост)
А как его правильно в моем случае использовать???

Код


procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  if TryStrToInt(Edit1.Text, I) then
    { ...
      Преобразовали. В I - число.
    }
end;



Цитата(Dobermann @  4.12.2008,  23:29 Найти цитируемый пост)
Чёт не нашел такого значения у свойств... 


Это стиль.

Код

SetWindowLong(Edit1.Handle, GWL_STYLE,
  GetWindowLong(Edit1.Handle, GWL_STYLE) Or ES_NUMBER);


Добавлено через 2 минуты и 32 секунды
Цитата(Dobermann @  4.12.2008,  23:29 Найти цитируемый пост)
А как его правильно в моем случае использовать???


Кстати оно во всех случаях одинаково используется...



PM   Вверх
Christoph
Дата 4.12.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Код

SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(edit1.Handle, GWL_STYLE) or ES_NUMBER)



http://delphi.about.com/library/rtl/blrtlTryStrToInt.htm

Та я пока написал smile уже написали все smile я просто не видел предыдущие посты  smile 

Это сообщение отредактировал(а) Christoph - 5.12.2008, 10:22


--------------------
user posted image
PM MAIL ICQ   Вверх
Exai1e
Дата 4.12.2008, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 2
Всего: 30



ps. кто еще даст ответ ? или 3х уже достаточно ;)  smile 


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Dobermann
Дата 5.12.2008, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(Exai1e @  4.12.2008,  23:50 Найти цитируемый пост)
ps. кто еще даст ответ ? или 3х уже достаточно ;)

Мерси мальчики =*
Цитата

SetWindowLong(Edit1.Handle, GWL_STYLE,
  GetWindowLong(Edit1.Handle, GWL_STYLE) Or ES_NUMBER);

Вот это работает!
А если у меня 5 эдитов, то надо в пяти таких сообщениях стиля указывать по очереди все 5 эдитов???
Можно это автоматизировать или зациклить??? Или еще что-нибудь...
Т.е.:
Цитата

SetWindowLong(Edit1.Handle,...
SetWindowLong(Edit2.Handle,...
SetWindowLong(Edit3.Handle,...
SetWindowLong(Edit4.Handle,...
SetWindowLong(Edit5.Handle,...


PM   Вверх
Christoph
Дата 5.12.2008, 10:26 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Выделить все Edit в Object TreeView и затем создать событие OnEnter и это событие будет общим для всех Edit ов

Вот что получится:

Код

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(edit1.Handle, GWL_STYLE) or ES_NUMBER) ;
  SetWindowLong(Edit2.Handle, GWL_STYLE, GetWindowLong(edit2.Handle, GWL_STYLE) or ES_NUMBER);
  SetWindowLong(Edit3.Handle, GWL_STYLE, GetWindowLong(edit3.Handle, GWL_STYLE) or ES_NUMBER);
  SetWindowLong(Edit4.Handle, GWL_STYLE, GetWindowLong(edit4.Handle, GWL_STYLE) or ES_NUMBER);
  SetWindowLong(Edit5.Handle, GWL_STYLE, GetWindowLong(edit5.Handle, GWL_STYLE) or ES_NUMBER)
end;


Это сообщение отредактировал(а) Christoph - 5.12.2008, 10:27


--------------------
user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0958 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.