Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798

Вывод нулей перед числом в приложениях GUI WIN32

23.10.2009, 12:43. Показов 6269. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Я немного запутался, нужна помощь. Вопрос такой:
Есть несколько тысяч файлов с одинаковыми именами "Template####.txt", где #### - это номер, от 0000, 0001, ..., 0099, 0100, ..., 9999. Ведущие нули обязательны. Нужен простой алгоритм\цикл, который позволит подставлять значение вместо ####. Например так:
C++
1
2
3
4
5
6
7
...
String size = 10000; // Строку привожу к целому, нужна для связки имени файла с числом
 
for(int count = 0; count < size.ToInt(); count++){
   Memo1->Lines->Add(String("Template")+count+".txt");
}
...
Но так будет неправильно
Code
1
2
3
4
5
6
7
Template0.txt
Template1.txt
...
Template99.txt
Template100.txt
...
Template9999.txt
С консольным вариантом делать умею.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
   int z, size = 100;
 
   cout.setf(ios::right, ios::adjustfield);
   cout.fill('0');
   for(int i = 0; i < size; i++){
      cout<<setw(3)<<dec<<i<<endl;
   }
 
   cin>>z;
 
    return 0;
}
Но не могу правильно прикрутить этот вариант для графической программы...
1. Нужно каким-то образом задать ширину поля для номера.
2. Задать символ-заполнитель (в данном случае ноль), для отсутствующих разрядов.

Подскажете?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2009, 12:43
Ответы с готовыми решениями:

Кириллица в WIN32 GUI приложениях
Всем привет. :) Снова опять к вам, вопрос у меня давний и наболевший, моими силами не решаемый. :( Ребята, буду благодарен и признателен....

Добавление нулей перед числом
Здравствуйте! Подскажите пожалуйста, есть ли функция, которая добавляет нули перед числом, если количество цифр в этом числе меньше...

Win32 GUI настроить вывод
Здравствуйте, не как не могу настроить вывод в GUI приложении cout и printf нечего не выводят, работаю в dev cpp, нажимаю отладка в окне...

10
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
23.10.2009, 18:20
Точно не помню, но как-то так:
C++
1
2
String s;
s.sprintf("%04d",i);
или так
C++
1
2
String s;
s.sprintf("%40d",i);
Не помню, надо будет уточнить.
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
23.10.2009, 20:44  [ТС]
Otaka, А как твой код прикрутить к именам файлов?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
23.10.2009, 20:51
Смотри пример:
C++
1
2
3
4
5
6
for(int i=0;i<20;i++)
        {
        String s;
        s.sprintf("template%04d.txt",i);
        ListBox1->AddItem(s,NULL);
        }
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
24.10.2009, 11:35  [ТС]
Otaka, Спасибо, то что надо. Вчера что-то не получалось с Memo, но сегодня с утра на свежую голову всё получилось. Так же придумал, используя твою идею, как сохранять файлы с номером индекса из списка ComboBox
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Проверка вывода имён в формате 'template####.txt'--------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   for(int i = 0; i < 20; i++){
      String s;
      s.sprintf("Template%04d.txt",i);
      Memo1->Lines->Add(s);
      ListBox1->AddItem(s, NULL);
     }
}
// Сохранение файла с индексом равным позиции в ComboBox'e--------------------
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
   String s;
//   s.sprintf("Template%04d.txt", ComboBox1->ItemIndex);
   Memo1->Lines->SaveToFile(s.sprintf("Template%04d.txt", ComboBox1->ItemIndex));
}
//---------------------------------------------------------------------------
Вопрос успешно решён.
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
25.10.2009, 16:29  [ТС]
Otaka, Привет. Помоги ещё разок. Я по быстрому протестировал на C++ Builder 6.0, там да, всё без проблем. Но я разрабатываю приложение в C++ Builder 2010. Вот тут у меня ничего не получается. sprintf - принимает char *, а в C++ Builder 2010 нужен wchar_t *. В гугле искал информацию, нашёл на вики - printf — Википедия и смотрел тут - справке msdn. Потом нашёл, что можно использовать wsprintf и в общем запутался в поисках и решении. #include <stdio.h> - подключен. Как переделать текущий вариант для билдера 2010?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
25.10.2009, 16:38
Может так?
C++
1
2
String s;
s.sprintf(L"Template%04d.txt",i);
Все себе собираюсь 2010 поставить, но как-то руки не доходят, поэтому как должно быть не знаю.
Ты, кстати, можешь конкретно писать AnsiString, и будет все по старому(я надеюсь).
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
25.10.2009, 17:12  [ТС]
Цитата Сообщение от Otaka Посмотреть сообщение
Ты, кстати, можешь конкретно писать AnsiString
Да. Всё правильно. Затупил малость. Уже опробовал так. )))) Ты чуть-чуть опередил.
Цитата Сообщение от Otaka Посмотреть сообщение
будет все по старому(я надеюсь).
Всё в порядке. Меня зациклило на String'ах
C++
1
2
3
4
5
6
...
for(int i = 0; i < 20; i++){
   AnsiString s;
   s.sprintf("Template%04d.txt", i);
   Memo1->Lines->Add(s);
...
Вопрос решён на 100% Спасибо Otaka.
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
25.10.2009, 20:39  [ТС]
Цитата Сообщение от Maestrino Посмотреть сообщение
C++ Builder 2010
Соврал. C++ Builder 2009, но сути уже не играет. Всё работает.
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
31.10.2009, 17:11  [ТС]
Ещё придумал такой код для вывода ведущих нулей. Пример кода, сначала выводит "Template####.txt" для примера в Memo, а потом сохраняет файлы с именами, в которых перед последним числом присутствуют ведущие нули.
C++
1
2
3
4
5
6
7
8
9
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   for(int i = 0; i <= 20; i++){
     Memo1->Lines->Add(FormatFloat("Template0###", i)+".txt");
     Memo1->Lines->SaveToFile(FormatFloat("Template0###", i)+".txt");
    }
}
//---------------------------------------------------------------------------
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
31.10.2009, 17:17
Тоже вариант.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2009, 17:17
Помогаю со студенческими работами здесь

Вывод нулей перед запятой
Дано число 1100,11 Нужно чтобы вывело 001100,11 Как это реализовать? ПОМОГИТЕ

Вывод знака + перед числом
Привет! подскажите как мне решить такую проблему есть переменная $temperatura она возврацает температуру например 12°C ...

Графика в консольных приложениях WIN32
Всем привет))) Может тупой вопрос но оч надо узнать, как работать с простой графикой на новых версиях VC++. Я знаю что нужен graphic.h. Но...

Не выводится консоль в Win32 приложениях
собственно такая проблема. когда запускаешь проект в visual studio 2010 (любой, даже только что созданый, т.е. пустой) не выводится консоль...

Использование графических ресурсов в приложениях Win32
Помогите исправить ошибку:error C2664: LoadCursorW: невозможно преобразовать параметр 2 из &quot;int&quot; в &quot;LPCWSTR&quot; 1&gt; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru