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

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

О StrToFloat [D7, XP]


AlexDan ©   (2008-08-16 00:16:00) 

Даа.. Закрыли ветки, я и отойти не успел(..
Там был вопрос, помоему к @!!exу или {RASkov}у {произносить легко, писать сложно)..}
cha:= StrToFloat(Edit1.text);
на точку ругается, как описать реакцию на точку?


@!!ex   (2008-08-16 09:58:00) [1]

> [0] AlexDan ©   (16.08.08 00:16)

Да ты похожде и не читал что я писал...
Если вводит пользователь, то он должен САМ решать, какой разделитель использовать. ДЛ яэтого и придумали региональные настройки.
Свой разделитель имеет смысл использовать только для внутренних данных, к которым пользователь не имеет доступа.


Smile   (2008-08-16 08:55:00) [2]


> AlexDan ©   (16.08.08 00:16)

Установи компонент
http://delphi4all.narod.ru/vcl/numedit.zip
и забудь о своих проблемах, компонент сам разберется с DecimalSeparator (для него это не опера:))
В крайнем случае поймешь как это реализуется


{RASkov}   (2008-08-16 00:53:00) [3]

На всякий случай:
Есть еще
TryStrToFloat
StrToFloatDef

может пригодятся в решении данного вопроса....


McSimm   (2008-08-16 00:50:00) [4]


> как описать реакцию на точку?


try
 StrToInt
except
 подробное, но без мата, описание реакции на точки, запятые и прочие шалости
end;


McSimm   (2008-08-16 00:47:00) [5]

Так может и в случае с запятой то же самое ?

В системе есть настройка - что считать разделителем.
Если пользователь считает, что это запятая, то почему программа должна считать иначе ?


AlexDan   (2008-08-16 00:39:00) [6]

> {RASkov} ©   (16.08.08 00:37) [8]
Если так будут вводиться исходные данные, то USBдевайс надо к голове подключать)..


{RASkov}   (2008-08-16 00:37:00) [7]

> [5,6] McSimm ©   (16.08.08 00:35)

или даже так:
123.4,5
:)


McSimm   (2008-08-16 00:36:00) [8]

1234..5
123.4.5


{RASkov}   (2008-08-16 00:36:00) [9]

> [4] AlexDan ©   (16.08.08 00:30)
> будет всплывать какая-нибудь страшная картинка

Лучше какой-нить USBдевайс придумай, который по рукам будет бить если почует неладное...)


McSimm   (2008-08-16 00:35:00) [10]

а с двумя точками ?


AlexDan   (2008-08-16 00:30:00) [11]

> {RASkov} ©   (16.08.08 00:27) [3]
Адекватно реагировать - будет всплывать какая-нибудь страшная картинка..)


{RASkov}   (2008-08-16 00:27:00) [12]

> [2] AlexDan ©   (16.08.08 00:23)

Вопрос: А если в Edit1.Text введут число с запятой, что будешь делать? :)


AlexDan   (2008-08-16 00:23:00) [13]

Ага, спасибо, попробую)..


{RASkov}   (2008-08-16 00:22:00) [14]

> [0] AlexDan ©   (16.08.08 00:16)

Так и не удосужился посмотреть справку по второй(перегруженной) функции? :)
var E: Extended;
............
var FS: TFormatSettings;
begin
GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FS);
FS.DecimalSeparator:='.';
E:=StrToFloat({Edit1.text}'123.67', FS);
end;


Наверх

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