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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 13:18   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию TryStrToInt

Доброго времени суток уважаемые программисты. Наверное глупость но я довольно долго ломаю голову не могу ничего придумать, как вот сюда
Код:
procedure input(var znach: integer; Edit: TEdit; simvl: string );
begin
  znach:=StrToInt(Edit.Text);
  Form1.list.Lines.Add( simvl + ' = ' + Edit.Text)
end;
прикрутить функцию TryStrToInt?...вся беда в том то что вызов функции ввода не однократный
Код:
input(a1, field_1, 'a1');
   input(a2, field_2, 'a2');
   input(a3, field_3, 'a3');
...
и если одно из значений введено не правильно, то программа должна прекращать работу. Возможно ли это с помощью данной функции?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.10.2012, 13:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1-х, что значит - "прекращать работу"?!
2-х, крайне не рекомендую использовать в качестве идентификаторов имена системных переменных(в данном случае я имею в виду input)

3-х, да. можно использовать. Только не совсем понятно, зачем Вам именно TryStrToInt, можно использовать процедуру Val(), обёрткой над которой и является ваша TryStrToInt:
Код:
function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
  E: Integer;
begin
  Val(S, Value, E);
  Result := E = 0;
end;
я бы лично использовал напрямую Val(), но, можно использовать и TryStrToInt

вот так, например:
Код:
function InputEdit(var znach: integer; Edit: TEdit; simvl: string ) : boolean;
begin
  Result := TryStrToInt(Edit.Text, znach);
  if Result then 
     Form1.list.Lines.Add( simvl + ' = ' + Edit.Text)
end;
....

   if Not inputEdit(a1, field_1, 'a1') then // закончить программу, например, Exit или Close;
   if Not inputEdit(a2, field_2, 'a2') then // закончить программу, например, Exit или Close;
   if Not inputEdit(a3, field_3, 'a3')then // закончить программу, например, Exit или Close;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.10.2012, 13:41   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Serge_Bliznykov, спасибо...
прекращать работу, например, выводить сообщение о некорректном вводе и предлагать ввести данные заново
насчет второго, хорошо, учту на будущее
ну и за третье, еще раз спасибо))
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Ответ


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