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

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

как проверить строку если это число, или нет? [D6, Win95/98]


mike_yz ©   (2002-10-10 19:25:00) 

как проверить строку введённая пользователем приложения является ли она числом или нет?


yozhik   (2002-10-10 20:53:00) [1]

а если 12,3 и 12.3 - это одно и тоже, внезависимости от DecimalSeparator, только одно из "чисел" надо переконвертить ???
а как быть с 12, и с 012 - это число или нет ???
Есть решение для всех случаев, может не совсем правильное но рабочее:

function IsDigit(AVal: variant): boolean;
var sVal: string;
begin
sVal := Trim(String(AVal));
if (sVal="") or (sVal[1] in [".",",","0"]) or
(sVal[Length(sVal)] in [".",","]) then
begin
Result := False;
Exit;
end;
try
DecimalSeparator := ",";
StrToFloat(sVal);
Result := true
except
try
DecimalSeparator := ".";
StrToFloat(sVal);
Result := true
except
Result := False;
Exit;
end
end;
end;


Best Before 2024   (2002-10-10 19:45:00) [2]


StrToFloatDef
Уже и сам запутался :(


TTCustomDelphiMaster   (2002-10-10 19:43:00) [3]

Ага


Best Before 2024   (2002-10-10 19:39:00) [4]

I := StrToIntDef(Str, <какое вряд ли можно ввести>)
if I = <какое вряд ли можно ввести> then не число

FloatToStrDef - аналогично

или TTCustomDelphiMaster © (10.10.02 19:37)
только
StrToFloat :))


TTCustomDelphiMaster   (2002-10-10 19:37:00) [5]

try
floattostr
except
не число
end;


Best Before 2024   (2002-10-10 19:36:00) [6]

2 . (10.10.02 19:35)
А 12,,3,4 - Это тоже число :))


.   (2002-10-10 19:35:00) [7]

if not ( s[i] in ["0".."9", DecimalSeparator ) then


Best Before 2024   (2002-10-10 19:32:00) [8]

2 KaPaT © (10.10.02 19:29)
А 12.34 - это что, не число? или 12,34


.   (2002-10-10 19:30:00) [9]

я чтото слышал что обратные лупы быстрее работают это так?


KaPaT   (2002-10-10 19:29:00) [10]

я обычно так делал....

n:=s.Length;
for i:=1 to n do
If not (s[i] in ["0".."9"] then <значит не число>

Дальше уж сам обработай если это самый оптимальный вариант...пусть выскажутся другие


Best Before 2024   (2002-10-10 19:28:00) [11]

см функции
StrToInt Def
FloatToStr Def


Наверх

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