Текущий архив: 2006.04.30;
Скачать: CL | DM;
Вниз
Обработка ошибок Найти похожие ветки
← →
Leshas © (2006-04-12 09:27) [0]Здравствуйте!
Скажите пожалуйста, как можно обрабатывать ошибки, например:
1) есть 2 Edit"а и Button1. В 1 и 2 Edit вводятся 2 числа, и нажимается Button1.
2) При нажатии кнопки Button1 выполняется операция перевода значения строки в дробное число.
3) Преобразованные числа перемножаются
и тут возникает след. ситуация:
если вводятся числа, нипример, "12,12" и "10,1" (т.е. с запятой) перемножается отлично, а если вводить "12.12" и "10.1" (т.е. с точкой), то возникает ошибка!
Как можно обрабатывать такие ситуации без появления критических ошибок?
← →
Anatoly Podgoretsky © (2006-04-12 09:33) [1]TryStrToFloat
← →
Virgo_Style © (2006-04-12 09:35) [2]* запретить ввод "неправильного" знака
* заменить "неправильный" на "правильный" (можно на лету)
* запретить нажатие кнопки при неверных исходных
* использовать функцию перевода строки в число, не различающую "." и ","
* использовать StrToFloatDef
* использовать TryStrToFloat
* использовать try-except-end
и вообще imho это не критическая ошибка.
← →
balepa © (2006-04-12 09:45) [3]Вот тебе еще
procedure TForm1.Button1Click(Sender: TObject);
var
k: double;
i:integer;
s: string;
begin
i:= pos(".",Edit1.Text);
s:= Edit1.Text;
s[i]:= ",";
k:= strtofloat(s);
Showmessage(Floattostr(k));
end;
Можно и MaskEdit использовать.
← →
Leshas © (2006-04-12 09:46) [4]Соглашусь, может она и не критическая, но программа у меня слетает! Не хотелось бы!
Virgo_Style, спасибо!
← →
kester © (2006-04-12 16:40) [5]Можно сделать так:
edit1.Text:=StringReplace(edit1.Text,".",",",[rfReplaceAll]);
это заменяет все точки на запятые в Edit`e.
Еще можно поизменять DecimalSeparator:DecimalSeparator:=",";
илиDecimalSeparator:=".";
← →
Галинка © (2006-04-15 02:00) [6]Если хотите громко и показательно, то try-except-end. Причем не по нажатию Button1, а по выходу из самого Edit.Exit.
Можно еще на форму поместить предупреждение, что десятичный знак - запятая.
имхо. с запятой удобнее, т.к. чаще цифры вводят с NumPad"a.
← →
Германн © (2006-04-15 02:20) [7]
> Галинка © (15.04.06 02:00) [6]
>
> Если хотите громко и показательно, то try-except-end. Причем
> не по нажатию Button1, а по выходу из самого Edit.Exit.
>
> Можно еще на форму поместить предупреждение, что десятичный
> знак - запятая.
Можно, но, имхо, не нужно.
Лучше использовать какой-либо вариант из Virgo_Style © (12.04.06 09:35) [2]
← →
Anatoly Podgoretsky © (2006-04-15 12:00) [8]Галинка © (15.04.06 02:00) [6]
Не с запятой, а с десятичным разделителем, цифровая клавиатура это поддерживает, какой текущий язык будет, такой будет и разделитель.
Главное не диктовать пользователю, какой разделитель использовать в системе, не программиста это.
Страницы: 1 вся ветка
Текущий архив: 2006.04.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.011 c