Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разделитель тысяц / 14 сообщений из 14, страница 1 из 1
20.05.2005, 11:41
    #33076573
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Доброго всем времени суток!

Ребяты есть вопрос нужна функция для перевода числа в текстовый формат, причем с использованием разделителя тысяц.
Например есть число: 56845345.21
Надо получить '56 845 345.21'

Начал писать свою, но подумал, а что если есть фоксовская? Чего извращаться-то?

Заранее благодарен!

P.S. У меня фокс 5.0
...
Рейтинг: 0 / 0
20.05.2005, 11:45
    #33076595
гость 37
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Код: plaintext
1.
set mark to ' '
?transform( 123456789 ,'999,999,999')
...
Рейтинг: 0 / 0
20.05.2005, 11:45
    #33076596
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Для 5.0 - не уверен, но в 6 это работает

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"999 999 999 999.99")
...
Рейтинг: 0 / 0
20.05.2005, 11:47
    #33076600
гость 38
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
ВладимирМДля 5.0 - не уверен, но в 6 это работает

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"999 999 999 999.99")

Работает и в 5.
...
Рейтинг: 0 / 0
20.05.2005, 11:47
    #33076601
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
? TRANSFORM(123456.78, '999 999 999 999.99')
...
Рейтинг: 0 / 0
20.05.2005, 11:52
    #33076614
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Чувствовал же, что не может не быть!

Всем большое спасибо! Что-то раньше я как-то функцию TRANSFORM() стороной обходил, видно зря!
...
Рейтинг: 0 / 0
20.05.2005, 12:06
    #33076653
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
А чем не устраивает SET SEPARATOR TO " " ?
С уважением, Алексей.
...
Рейтинг: 0 / 0
20.05.2005, 12:15
    #33076688
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Aleksey_KА чем не устраивает SET SEPARATOR TO " " ?
Честно говоря, Transform() меня полностью устроила... но для интереса хотел бы узнать как использовать SET SEPARATOR TO " ", а то что-то я не разобрался!
...
Рейтинг: 0 / 0
20.05.2005, 12:18
    #33076701
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
угу
SET SEPARATOR TO '#'
gnX = 1000
@ 2,2 GET gnX PICTURE '9,999.99'
READ
SET SEPARATOR TO && Reset the separator to a comma (,)

а вот уже из МСДН
Included for backward compatibility . Use the Digit grouping symbol setting of the Windows Regional Options Control Panel instead.

Примерчик как его использовать плиз, а то я не понял про что Вы
...
Рейтинг: 0 / 0
20.05.2005, 12:30
    #33076741
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Вопрос Алексея был не к тебе, а к гость 37

Дело в том, что при указании маски вывода числа в команде Transform() можно использовать специальные зарезервированные символы

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

В данном случае символы запятой и точки - это не есть реальные символы, которые будут отображены в полученной строке. Это некие "кодовые обозначения"

9 - в этом месте может быть любая цифра, или знак минус, или знак плюс
"запятая" - в этом месте должен стоять символ-разделитель троек цифр
"точка" - в этом месте должен стоять символ-разделитель целой и дробной части числа

Настройка SET SEPARATOR как раз и отвечает за то, какой именно символ будет использоваться в качестве разделителя троек чисел. А настройка SET POINT отвечает за то, какой разделитель будет использован в качестве разделителя целой и дробной части числа.

Проверь:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
* Настройки FoxPro по умолчанию
SET POINT TO
SET SEPARATOR TO
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

SET POINT TO "-"
SET SEPARATOR TO "`"
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

SET POINT TO ","
SET SEPARATOR TO " "
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

* Используем системные настройки Windows
SET SYSFORMATS ON
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

* Возвращаем настройки по умолчанию
SET POINT TO
SET SEPARATOR TO

Настройка SET MARK отвечает за символы разделители в датах (отделяет дни, месяцы и годы между собой)

Когда в маске вывода был использован пробел, то это был не какой-то условный символ, а непосредственно обычный символ, который надо печатать в этом месте. Там можно написать почти любую маску вывода

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"@R ЧИСЛО 999--999--999--999.99")
...
Рейтинг: 0 / 0
20.05.2005, 12:37
    #33076772
kms_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
ВладимирМ, всегда удивляюсь насколько точно и исчерпывающе Вы отвечаете!

Огромное спасибо!
...
Рейтинг: 0 / 0
20.05.2005, 12:39
    #33076780
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
хорошая лекция спасибо
...
Рейтинг: 0 / 0
20.05.2005, 13:20
    #33076921
гость 39
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
Конечно, SEPARATOR, а не MARK. Не проверил настройки по умолчанию и промазал, извиняюсь.
...
Рейтинг: 0 / 0
20.05.2005, 15:03
    #33077358
Crispy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделитель тысяц
2ВладимирМ
>Для 5.0 - не уверен, но в 6 это работает

Это и в FPD2.6 работает.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разделитель тысяц / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]