Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

Обработка ошибок   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
10-1117689235
Alex--
2005-06-02 09:13
2006.04.30
Регистрация сервера автоматизации


1-1143093740
Дмитрий_А
2006-03-23 09:02
2006.04.30
Использование Microsoft ScriptControl


1-1142956952
Volf_555
2006-03-21 19:02
2006.04.30
Как определить handle компонента, который находится на панели?!!!


2-1144648843
vvrz
2006-04-10 10:00
2006.04.30
Мемо в MS SQL Server


2-1144932310
Golik
2006-04-13 16:45
2006.04.30
DateTimePicker





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский