Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка исключений [Delphi]


Дмитрий ©   (2009-04-20 08:00:00) 

У меня не большой вопрос! Есть программа ниже приведен примерный код но суть одна и та же:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
try
If Edit1.text = 'Привет' then
Edit2.text := 'Привет';
If Edit1.text = 'Пока' then
Edit2.text := 'Пока';
//и т.д.
except
Edit1.text := 'Исключение';
end;
end;

end.

И возникает вопрос почему когда Edit1.text не равен ни ПРИВЕТ ни ПОКА он не обрабатывает исключение, и не присваивает Edit1.text := 'Исключение'???


Дмитрий   (2009-04-22 12:51:00) [1]

Demt большое спасибо все работает!!!


Demt   (2009-04-22 07:59:00) [2]

Объявляешь нужные константы, которые будем проверять (хоть сколько слов):
const
 ed1 = 'ПРИВЕТ';

 ed2 = 'ПОКА';
 ed3 = 'привет';
 ed4 = 'пока';
Помещаешь эти строчки например в Edit1Change:
 Case AnsiIndexStr(Edit1.Text, [ed1,ed2]) of

   0 : begin Edit3.Clear; Edit2.Text := 'Привет!'; end;

   1 : begin Edit3.Clear; Edit2.Text := 'Пока...' end;

 else begin Edit2.Clear; Edit3.Text := 'ОШИБКА!'; end;

 end;
И всё проверяет.
Небольшая ремарка: функция AnsiIndexStr находится в StrUtils (VCL!). В KOL не искал аналогичной функции, но скорее всего она там есть, только называется по другому.


Дмитрий   (2009-04-21 19:28:00) [3]

Demt слушай а поподробней можешь описать? Ну типо что такое Statement и т.д? Просто не совсем понял как применить этот оператор к моему примеру.


Demt   (2009-04-21 09:06:00) [4]

Оператор условного выбора case?
case Ordinal expression of
     Ordinal value {,Ordinal value...} : Statement;
     {...}
      else Statement;
  end;


Дмитрий   (2009-04-20 15:02:00) [5]

Да я знаю что для цикла исключение это else, ну тогда подскажите хотя бы как зделать так что бы при Edit1.text не равным ПРИВЕТ и ПОКА, он присваивал (пусть будет edit3.text) слово ОШИБКА! Как нибудь одной (общей) командой только не так:
If Edit1.text = 'Привет' then
Edit2.text := 'Привет'
Else edit3.text := 'Ошибка';


Дмитрий   (2009-04-20 15:01:00) [6]

Да я знаю что для цикла исключение это else, ну тогда подскажите хотя бы как зделать так что бы при Edit1.text не равным ПРИВЕТ и ПОКА, он присваивал (пусть будет edit3.text) слово ОШИБКА! Как нибудь одной (общей) командой только не так:
If Edit1.text = 'Привет' then
Edit2.text := 'Привет'
Else edit3.text := 'Ошибка';


MTsv DN   (2009-04-20 12:27:00) [7]

Хотя для данного примера правильно сказали уже - RTFM...


MTsv DN   (2009-04-20 12:25:00) [8]

Подключи ERR.PAS...


Demt   (2009-04-20 08:39:00) [9]

Исключение в IF - это else, но никак не try .. except. Читайте матчасть :)


exero   (2009-04-20 08:12:00) [10]

Вообще говоря ответ тут только один - вдумчиво почитать, что такое исключение.


Наверх

Титульная страница Поиск, карта сайта Написать письмо