Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.08;
Скачать: CL | DM;

Вниз

Обработка исключений   Найти похожие ветки 

 
Дмитрий   (2009-04-20 08:00) [0]

У меня не большой вопрос! Есть программа ниже приведен примерный код но суть одна и та же:
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 := "Исключение"???


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

Объявляешь нужные константы, которые будем проверять (хоть сколько слов):
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-22 12:51) [10]

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



Страницы: 1 вся ветка

Текущий архив: 2012.01.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
15-1316636981
Юрий
2011-09-22 00:29
2012.01.08
С днем рождения ! 22 сентября 2011 четверг


2-1317305480
Очень Злой
2011-09-29 18:11
2012.01.08
Как работать с двухмерным динамический массивом?


2-1317554526
lesstab
2011-10-02 15:22
2012.01.08
DBGrid.SelectedRows.ПередайВонТомуГриду


2-1317454345
vgvolk
2011-10-01 11:32
2012.01.08
Разворачивание окна автоматически


2-1317637088
onyx2012
2011-10-03 14:18
2012.01.08
кастомная сортировка в ExpressQuantumGrid