![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| HighTemplar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 17.3.2005 Репутация: нет Всего: нет |
Необходимо извлечь из Edit1 значение, введённое пользователем, в числовую t. Пишу:
t:=strtofloat(Edit1.text); При этом прога компилится, но сразу вслед за этим выдаётся окно ошибки класса EConvertError. В поле var описана типа Extended: t:Extended; пробовал типа Real, но то самое. Integer не подходит, нужна дробная часть. В чём же ошибка? |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Делитель дробной части должен быть правильный при вводе числа в Edit1.
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Используй TryStrToFloat
Иначе будешь ловить ошибку, tcpb в поле пустота или нечисловое значение. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
или просто запрети вводить точку,
вот тебе тривиальный пример для ввода чисел
Это сообщение отредактировал(а) chaos - 26.5.2005, 14:18 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Не серъезно. Во-первых я могу вставить текст. Во-вторых на пустоту все равно будет ругаться. В-третьих у меня в системе может быть именно точка, а не запяточка. В-четвертых я могу ввести '11,22,33,44' - проглотит, а глюк будет. Нет, тут нужно просто аккуратный перевод делать. TryStrToFloat самое то. |
|||
|
||||
| gepard |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: нет Всего: 40 |
Число в edit1 должно писаться через ",", а не через ".". То бишь:
А не
-------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
||||||
|
|||||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Сказки. Разделитель может быть любым знаков, в зависимости от того, что установлено в системе. У меня, например, как раз точка, а не запяточка. Я как-то ради эксперимента ставил вообще текстовые разделители. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Snowy прав......разделителем может быть и буква зю в корейской кодировке, не вопрос....
Так, что либо TryStrToFloat, либо перед исполнением вкалатить проверку на корректность. Т.е. если пусти, если разделитель не тот, если разделителей несколько, если число превосходит максимальное количество знаков и т.д. А можно вывернуться и написать компонент наследника отSpinEdit-a например для работы с числами типа Extendet, но ИМХО овчинка выделки не стоит. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |