|
Вопрос # 513/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты! Как автоматически заменять в числах запятую на точку. Например 7,5 на 7.5
Ответ #1. Отвечает эксперт: Иусов Сергей Ник.
Здравствуйте, Usmonov Farrukh Faiziddinovich!
Нечнем с того, что менять что-либо в числах скорее всего нельзя, менять можно только в строковом представлении чисел.
Для этого есть несколько путей:
1. Меняем региональные настройки системы (нежелательно)
2. Меняем значение переменной DecimalSeparator
3. Используем функцию StringReplace для замены "зяпятой" на "точку" (ну или наоборот) в уже представленным строкой числе.
 |
Ответ отправил: Иусов Сергей Ник. (статус: 3-ий класс)
Время отправки: 23 апреля 2007, 09:42
Оценка за ответ: 4
|
Ответ #2. Отвечает эксперт: min@y™
Если эти числа ты выводишь на экран (на TLabel, TEdit или ещё куда), используя одну из функций преобразования "число --> строка", например FloatToStrF() или FormatFloat(), то проcто перед вызовом этой функции поставь DecimalSeparator:= '.';
Если же эти числа у тебя хранятся УЖЕ в текстовом виде, то поможет функция StringReplace().
Пример в приложении.
Приложение: Переключить в обычный режим- program Project1;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils;
-
- var
- S: string;
-
- begin
-
- DecimalSeparator:= ',';
- S:= FormatFloat('0.00', 2.75);
- WriteLn(S);
-
- DecimalSeparator:= '.';
- S:= FormatFloat('0.00', 2.75);
- WriteLn(S);
-
-
- S:= StringReplace('2,75 7,5 6,12342, 3,1415926535897932384626433832795',
- ',', '.', [rfReplaceAll]);
- WriteLn(S);
-
- ReadLn;
- end.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 23 апреля 2007, 09:43
Оценка за ответ: 5
|
Ответ #3. Отвечает эксперт: Вадим К
Для вывода с точкой есть класная процедура, но о ней сейчас почему то не вспоминают. Она с точкой всегда даёт
s:string;
r:real;
str(s,r:4:2)
первая переменная - куда результат положить. вторая - собственно, откуда число брать. 4 - сколько под число отвести знаков (учитывая минус перед отрицательными, 2 - сколько для дробной части.
Играться с DecimalSeparator не рекомендую, так как когда пользователь меняет региональные настройки и в этот момент твоя прога работает могут быть разные побочные эффекты.
Если организуем ввод, то тут для Edit'а лучще перехватывать KeyPress и подменять запятую на точку.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 23 апреля 2007, 11:21
Оценка за ответ: 4
|
Ответ #4. Отвечает эксперт: Djec
Ко всему прочему могу добавить что при вводе, например, в Edit, менять автоматически запятую на точку можно в обработчике события OnKeyPress. Просто написать
If Key = ','
then
Key := '.'
 |
Ответ отправил: Djec (статус: 1-ый класс)
Время отправки: 23 апреля 2007, 21:50
Оценка за ответ: 4
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|