Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 341

/ вопрос решён /

Подскажите, пожалуйста, каким образом можно преобразовывать данные из String в Real?

Васильев Алексей Александрович Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Васильев Алексей Александрович (статус: Посетитель)
Вопрос отправлен: 23 февраля 2007, 18:17
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: Aymenel

Здравствуйте, Васильев Алексей Александрович!
function StrTofloat(const S: string): Extended;
Пример использования:
var
S: string;
R: real;
begin
S := 3,14;
R := StrToFloat(S);
end;

Ответ отправил: Aymenel (статус: 2-ой класс)
Время отправки: 23 февраля 2007, 18:41
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Вадим К

var
r:real;
s:string;
i:integer;
begin
r:=strtofloat(s);//разделитель-запятая, если у вас русская Windows. Для английской - точка
Val(s,r,i);
//Разделитель всегда точка. Эта процедура не генерит ошибки в случае невозможности преобразовать. Переменная i равна будет нулю, если при преобразовании небыло ошибок.
В противном случае собержит номер символа, который "непонравился". Содержимое переменной-результата при этом считается неопределённым.

====
Матчасть неучим?

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 23 февраля 2007, 18:42
Оценка за ответ: 5

Ответ #3. Отвечает эксперт: Лукьяненко Алексей Валериевич

В качестве варианта, чтоб не видеть ошибки и при этом получать хоть что-то, можно использовать StrToFloatEx(Value: String; Default: Extended)
последний параметр - значение по-умолчанию, которое возвращается, если Value не является корректным float значением.

Ответ отправил: Лукьяненко Алексей Валериевич (статус: 1-ый класс)
Время отправки: 23 февраля 2007, 19:27
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 23 февраля 2007, 19:32; участников в обсуждении: 3.
Шарайчук Сергей Олександрович

Шарайчук Сергей Олександрович (статус: 2-ой класс), 23 февраля 2007, 18:38 [#1]:

Попробуй так val(s,a,cod),s-строка, а-real, cod-integer, змінна цілого типу використовується для запису коду помилки якщо така існує, функція val перетворює сторку s в число типу real і присвоює його змінній a!
Я бы изменил мир, но Бог не дает исходники!
Aymenel

Aymenel (статус: 2-ой класс), 23 февраля 2007, 18:49 [#2]:

Добавлю к сказанному господином Шарайчук.
В переменную Cod будет занесен ноль в случае успешного завершения преобразования или номер позиции, в которой произошла ошибка. Для строк с ограничивающим нулем номер похиции возвращается на единицу больше, чем для строки, представленной как массив символов (String).
Эта процедура может быть использована и для преобразования строки в целое число.
Шарайчук Сергей Олександрович

Шарайчук Сергей Олександрович (статус: 2-ой класс), 23 февраля 2007, 18:57 [#3]:

Федоров Роман Сергеевич, спасибо за дополнение, если можеш, дай ответ на мой Вопрос #342
Я бы изменил мир, но Бог не дает исходники!
Лукьяненко Алексей Валериевич

Лукьяненко Алексей Валериевич (статус: 1-ый класс), 23 февраля 2007, 19:32 [#4]:

Опечатался, не StrToFloatEx, а StrToFloatDef

31 января 2011, 19:22: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.02 сек.