Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227

Преобразовать строку с числом в денежный формат

30.01.2016, 22:21. Показов 3277. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать так, чтобы при вводе цифр в Edit, после каждой третий цифрой разделяла. Как обычно воспринимает денежный формат. Допустим 1 000,00; 10 000,00; 100 000,00; 1 000 000,00.
Пробовал в TMaskEdit, но там получается формат для той суммы, который ты указал. Объясняю если я вводил формат для миллиона, то для в этот формат ввести тысячи или даже 10 000 проблематично, потому что надо полностью заполнить все строки маски. Кто может подсказать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2016, 22:21
Ответы с готовыми решениями:

Преобразовать введённое с клавиатуры дробное число в денежный формат.
Составить программу, которая преобразует введённое с клавиатуры дробное число в денежный формат. Например, число 12, 348 должно быть...

Преобразовать введенное с клавиатуры дробное число в денежный формат
Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12.5 должно быть...

Преобразовать введенное с клавиатуры дробное число в денежный формат
Нужно составить программу,которая преобразует введенное с клавиатуры дробное число в денежный формат. это нужно сделать только с помощью...

11
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
01.02.2016, 11:52
Это смотря как вы хотите сделать. Если хотите сделать "на лету", то это одно событие, если по окончании ввода - уже другое.
0
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227
02.02.2016, 23:04  [ТС]
По окончание ввода
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
03.02.2016, 04:35
Поиск по форуму
Здесь то что тебе нужно.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
03.02.2016, 18:27
Rusline18, версия билдера какая?
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
03.02.2016, 18:59
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Вот примерчик для преобразования строки цифр в "денежный" формат и из "денежного" формата обратно в число
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//---------------------------------------------------------------------------
//Функция преобразования "денежного" формата в число
int MoneyToInt(String s)
{
  s = StringReplace(s, " ", "", TReplaceFlags() << rfReplaceAll);
  return StrToInt(s);
}
//---------------------------------------------------------------------------
//Функция преобразования строки цифр в "денежный" формат
String StrToMoney(String s)
{
  ThousandSeparator = ' ';
  return String().Format("%.0n", ARRAYOFCONST((s.ToDouble())));
}
//---------------------------------------------------------------------------
Пример использования: по окончании ввода в Едит1 строки цифр и при потере Едитом фокуса происходит преобразование строки цифр в "денежный" формат
При нажатии кнопки происходит обратное преобразование и к полученному числу прибавляется 11. Результат выводится в сообщении
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
  Edit1->Text = StrToMoney(Edit1->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShowMessage(IntToStr(MoneyToInt(Edit1->Text) + 11));
}
Спрашиваю про версию почему... Потому, что в 6-м билдере это все прекрасно отработает, а в RAD надо немного переделать...
Миниатюры
Преобразовать строку с числом в денежный формат  
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
04.02.2016, 09:53
D1973, меня что-то смущает, что на картинке числа разнятся - в поле Edit 1234567, а в ShowMessage 1234578.
Наверное в функции нажатии кнопки цифра одиннадцать лишняя:
Цитата Сообщение от D1973 Посмотреть сообщение
C++
8
ShowMessage(IntToStr(MoneyToInt(Edit1->Text) + 11));
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
04.02.2016, 14:53
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Наверное в функции нажатии кнопки цифра одиннадцать лишняя:
Не, не лишняя. Я специально сделал прибавление числа 11 к результату, который возвращает функция MoneyToInt(), просто чтобы продемонстрировать, что результат этой функции - действительно число и с ним можно производить какие-то операции. Я даже написал об этом...
Цитата Сообщение от D1973 Посмотреть сообщение
При нажатии кнопки происходит обратное преобразование и к полученному числу прибавляется 11. Результат выводится в сообщении
1
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227
06.02.2016, 19:49  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Потому, что в 6-м билдере это все прекрасно отработает
у меня xe7 билдер

Добавлено через 11 минут
Нет так не получается почему-то
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
06.02.2016, 20:26
Лучший ответ Сообщение было отмечено Rusline18 как решение

Решение

Сейчас попробовал на ХЕ3 (в ХЕ7 должно быть то же самое). Все, что нужно сделать - поменять строчку
C++
1
ThousandSeparator = ' ';
на
C++
1
FormatSettings.ThousandSeparator = ' ';
1
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227
07.02.2016, 10:48  [ТС]
А что означает знак "<<"?

Добавлено через 12 минут
И еще дна проблема, походу эту ячейку нельзя оставлять пустой, а можно как-то сделать, так чтобы возможно оставлять ячейку пустой. Допустим если не чайно нажал на эту ячейку?
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
07.02.2016, 14:13
Цитата Сообщение от Rusline18 Посмотреть сообщение
А что означает знак "<<"
Ко множеству значений TReplaceFlags() ты добавляешь значение rfReplaceAll
Цитата Сообщение от Rusline18 Посмотреть сообщение
эту ячейку нельзя оставлять пустой
Какую ячейку??? Речь, вообще-то, шла о полях ввода Edit! Но вопрос понятен... До билдера доберусь - примерчик брошу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2016, 14:13
Помогаю со студенческими работами здесь

Преобразовать введенное с клавиатуры дробное число в денежный формат
Спроектировать форму, содержащую визуальные компоненты для ввода исходных данных и отображения результата, и составить программу для...

Преобразовать дробное число в денежный формат (рубли и копейки) используя int и frac.
Преобразовать дробное число в денежный формат (рубли и копейки) используя int и frac.

Преобразовать строку из файла, содержащую запись десятичного числа, в строку с двоичным числом
Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа. И...

Преобразовать строку в числовой формат.
Подскажите, как преобразовать строку в число так что бы число не округлялось? Пример Есть строка : 12,2 Нужно что бы после...

Преобразовать строку в формат времени
У меня есть строка символов например 1410267078 мне нужно чтобы эта строка на екран выводилась в формате d.MM.yyyy HH:mm:ss как мне это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru