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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2008, 22:23   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию Определить строку на численность.

Задача такова, есть некая вводимая строка и нужно проверить является строка числом или нет. Причем число может быть каким угодно, вещественным, отрицательным и т.д.
По-началу задача казалась очень проста, но оказывается не так то все и просто.
Прошу совета, как можно данное реализовать.
Небесный вне форума Ответить с цитированием
Старый 10.11.2008, 22:28   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну прям ужас, как непросто
А на что StrToFloat function ? Или TryStrToFloat function ?
mihali4 вне форума Ответить с цитированием
Старый 10.11.2008, 22:39   #3
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну прям ужас, как непросто
А на что StrToFloat function ? Или TryStrToFloat function ?
Ну, есть разные уровни знаний.
Если можно приведите пример пожалуйста.
Небесный вне форума Ответить с цитированием
Старый 10.11.2008, 22:53   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Если можно приведите пример пожалуйста
Пожалуйста. Запускаем Дельфи, жмем F1, набираем хотя бы первые буковки нужной функции и... вот она, родимая, и все про нее подробно рассказано.
mihali4 вне форума Ответить с цитированием
Старый 10.11.2008, 23:45   #5
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

И да простит меня mihali4 =)

Код:
var
  Str: string;
try
  StrToFloat(Str);
except
  ShowMessage('Не число!');
  exit;
end;
  ShowMessage('Число!');
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 10.11.2008, 23:48   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
И да простит меня mihali4
Тогда где же пример с TryStrToFloat ?
mihali4 вне форума Ответить с цитированием
Старый 10.11.2008, 23:55   #7
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Цитата:
Тогда где же пример с TryStrToFloat ?
Вот:
Код:
var
  Str: string;
if TryStrToFloat(Str) then
  ShowMessage('Число!')
else
  ShowMessage('Не число!');
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.

Последний раз редактировалось VVM; 11.11.2008 в 00:14. Причина: Опечатка. StrToFloat заменено на TryStrToFloat
VVM вне форума Ответить с цитированием
Старый 11.11.2008, 00:05   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Тогда где же пример с TryStrToFloat ?
Вот:

var
Str: string;
if StrToFloat(Str) then
ShowMessage('Число!')
else
ShowMessage('Не число!');
Вы не поняли... Есть функция StrToFloat, и есть функция TryStrToFloat.
У вас в обоих случаях StrToFloat... Опечатка?
mihali4 вне форума Ответить с цитированием
Старый 11.11.2008, 00:09   #9
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Да, опечатка, сорри. Поправил.
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.

Последний раз редактировалось VVM; 11.11.2008 в 00:24.
VVM вне форума Ответить с цитированием
Старый 11.11.2008, 08:25   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

можно через ф-ию VAL
Код:
var
  numberString : string;
  float        : Extended;
  errorPos     : Integer;
begin
  // Установка строки правильным с вещественным числом
  numberString := '12345.678';

  // Его преобразование в значение
  Val(numberString, float, errorPos);

  // Показ строки и преобразованного значения
  if errorPos = 0
  then ShowMessageFmt('Val(%s) = %12.3f',[numberString,float]);

  // Val игнорирует Десятичный Разделитель, а конвертеры SysUtils - нет
  DecimalSeparator := '_';
  numberString := '12345_678';
  Val(numberString, float, errorPos);
  if errorPos = 0
  then ShowMessageFmt('Val(%s) = %12.3f',[numberString,float])
  else ShowMessageFmt('Val(%s) потерпело неудачу в позиции %d',
                      [numberString, errorPos]);
end;
Val(12345.678) = 12345.678
Val(12345_678) потерпело неудачу в позиции 6
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разбить строку Ceprey Общие вопросы C/C++ 10 24.12.2009 20:47
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
Числа в строку DeDoK Общие вопросы Delphi 8 07.06.2008 00:08
Считать строку XATAB Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 10.04.2008 21:18
Задача на строку. fikret123 Паскаль, Turbo Pascal, PascalABC.NET 11 21.03.2008 07:40