Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1144692023
Sergey Masloff
2006-04-10 22:00
2006.04.30
Оказывается ихняя ADA это "наш" PL/SQL


15-1144394131
Der Nechk@ssoff
2006-04-07 11:15
2006.04.30
Русификация


15-1144635217
Карелин Артем
2006-04-10 06:13
2006.04.30
Учите русский чтобы писать описание!


1-1143001881
Старик
2006-03-22 07:31
2006.04.30
DLL. Ошибка при использовании типа string в ее функциях


2-1144782592
kester
2006-04-11 23:09
2006.04.30
Выделение строки цветом в TRichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский