13 / 13 / 3
Регистрация: 24.04.2011
Сообщений: 122
1

Обработка исключительных ситуаций

06.10.2012, 12:26. Показов 1919. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Написал проверку на ввод в массив вещественных чисел:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int i,j;
float A[6][6];
bool flag=false;
for(i=1;i<n;i++)
for(j=1;j<m;j++)
 {
  try
  {
  A[i][j]=StrToFloat(Form1->StringGrid1->Cells[j][i]);
 }
 catch (EConvertError&)
 {
  A[i][j]=0;
  flag=true;
 }
  }
 
if(flag)
Application->MessageBox("Некорректные данные!","Ошибка",
MB_OK+MB_ICONEXCLAMATION);
else
{...//Если все правильно идем дальше}
Собственно вопрос. У меня всегда пишет, что данные не правильные, хотя ввел все вещественные числа. Что у меня не так. Подскажите пожалуйста)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2012, 12:26
Ответы с готовыми решениями:

Обработка исключительных ситуаций на С++
Добрый вечер) Можете объяснить, как правильно будет оформить блок cath() Вот код программы: int...

Обработка исключительных ситуаций
catch(Exception &amp;ex){ Application-&gt;MessageBoxA(ex.Message.c_str(),&quot;Ошибка1&quot;); ...

Обработка исключительных ситуаций
Имеется MaskEdit с форматом ввода !99/99/00;1;_ т.е. __.__.__ ввод даты рождения. Т.е. если...

Обработка исключительных ситуаций в C++ Builder 2010
собственно сабж, подскажите как?

8
401 / 312 / 74
Регистрация: 17.03.2010
Сообщений: 1,119
06.10.2012, 12:40 2
Возможно дело в разделителе дробной и целой части, т.е. 3,14 или 3.14.
1
13 / 13 / 3
Регистрация: 24.04.2011
Сообщений: 122
06.10.2012, 12:49  [ТС] 3
Хмм раньше через , тоже ошибку писало. Сейчас нет. Ладно вопрос решен)
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
06.10.2012, 12:54 4
Попробуй через запятую. Попробуй ввести целое число без дробной части. Неплохо еще знать в какой именно ячейке некорректные данные.
0
401 / 312 / 74
Регистрация: 17.03.2010
Сообщений: 1,119
06.10.2012, 13:11 5
Посмотри в региональных настройках своей системы какой знак стоит в качестве разделителя.
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
28.11.2012, 17:51 6
Для события OnEnter компонента Edit записать код, в котором необходимо преобразовать введенные символы в число с помощью функции StrToInt. Использовать исключение для обработки ошибки EConvertError.
Написал следующее:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TMainForm.EditEnter(Sender: TObject);
 var int: integer; str: string; Key: char;
begin
 str:='Строка'; // Название строки.
 Edit.Text:=''; // По умолчанию пустая строка.
 try // Пробовать
  int:=StrToInt(Edit.Text); // Символы в строке преобразовать в число.
 except // Исключить...
  on EConvertError //  ошибку "EConvertError"
  do ShowMessage('Неверное значение'); // Если возникает, вывести сообщение об ошибке.
 end;
 ShowMessage(str+' = '+IntToStr(int)); // Вывести результат - какой символ в строке.
end;
Когда я ставлю курсор в Edit, сообщение ошибке выводится, следом выводится сообщение "Строка = 0", но потом когда я пытаюсь ввести символ ничего не водиться . Где ошибка и как правильно? Пжста подскажите!
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.11.2012, 19:46 7
C++
1
flag = TryStrToFloat( Form1->StringGrid1->Cells[j][i],A[i][j] );
Добавлено через 2 минуты
Либо

C++
1
2
3
4
5
6
7
8
9
try
  {
   A[i][j]=StrToFloat(Form1->StringGrid1->Cells[j][i]);
  }
 catch (EConvertError& E)
 {
  A[i][j]=0;
  Application->MessageBox(E.Message,"Ошибка", MB_OK+MB_ICONEXCLAMATION);
 }
У вас логика построения отлова исключений не правильная
0
Frizar
28.11.2012, 21:00  [ТС]
  #8

Не по теме:

Avazart,я то давно разобрался:).Это какой-то товарищ мою тему поднял и притом свой код на делфи написал)

0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
28.11.2012, 21:23 9
Упс! Действительно не туда спросил. Извините.
0
28.11.2012, 21:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2012, 21:23
Помогаю со студенческими работами здесь

Обработка исключительных ситуаций в консольном приложении
Всем добррого времени суток. Условие токово.Написать программу нахождения частного 2-х целых...

Перехват исключительных ситуаций
Запрограммировать программу, которая демонстрирует генерирования исключительных ситуаций, через...

Обработчик исключительных ситуаций
Проверьте, плиз, что не так. void __fastcall TForm1::Button1Click(TObject *Sender) { float...

Обработка исключительных ситуаций
Добрый день. Помоги разобраться с обработкой исключительных ситуаций. Вот я написал класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru