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

Переименование файла на следующий по порядковому номеру

24.10.2017, 13:57. Показов 1607. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Гложет вопрос на тему:

необходимо по запуску программы, чтобы у текстового файла изменялся номер в названии на +1 число
то есть допустим есть текстовый документ 'Отчет по предприятию 9', чтобы в итоге было не 9, а 10.
проблема состоит в том, что название до цифры будет меняться. После программа закрывается.
Возможно ли это реализовать?

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

ниже приведен пример, как это сделал я. ссылка на прогу: https://cloud.mail.ru/public/GEa4/vzuKNrd6K

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <vcl.h>
#pragma hdrstop
#include <IdGlobal.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double pepa2 ;
 double pepa3 ;
double pepa=1  ;
AnsiString kira;
AnsiString text;
//--------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 Memo2->Lines->Clear();
Memo2->Lines->LoadFromFile("C:\\ntw\\Win32\\Debug\\top.txt");
 
 
Edit1->Text=Memo2->Lines->Text;
pepa2=StrToInt(Edit1->Text);
 
 Memo3->Lines->Clear();
 Memo3->Lines->LoadFromFile("C:\\ntw\\Win32\\Debug\"+ FloatToStr(pepa2) +".txt");
 
pepa3=pepa2+pepa;
 
 
AnsiString FileName="C:\\ntw\\Win32\\Debug\" + FloatToStr(pepa2) + ".txt";
DeleteFile(FileName);
 
 kira=FloatToStr(pepa3);
 Memo1->Lines->Clear();
 Memo1->Lines->Text=Memo3->Lines->Text;
Memo1->Lines->SaveToFile("C:\\ntw\\Win32\\Debug\" + kira + ".txt");
 
Memo1->Lines->Clear();
Memo1->Lines->Text=kira;
Memo1->Lines->SaveToFile("C:\\ntw\\Win32\\Debug\\top.txt");
 
Application->Terminate();
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2017, 13:57
Ответы с готовыми решениями:

Строка: проверить по порядковому номеру символа не пробел ли это и вывести порядковый номер слова
Вобщем, есть программа, которая высчитывает порядковый номер слова в строке и номер позиции, в которой оно начинается. Как можно её...

ADODataset и ошибка 'В коллекции не удается найти элемент, соответствующий требуемому имени, или порядковому номеру'
Есть ADODataSet1, SELECT * FROM &quot;Table1&quot; T1 WHERE (T1.&quot;Number&quot; = :ID OR :ID = -1) // параметры ID для поиска по ID ввожу в Object...

Как найти ip адерса по порядковому номеру компьютера, адресу подсети, маске и порядковому номеру?
Напр.: Подсеть: 115.0.0.0 Маска: 224.0.0.0, длина - 3 Подсеть: 1 по порядку Найти: ип 415. и 159 компа

2
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
24.10.2017, 22:36
kkk666, твоя программа будет работать только при одном условии - обязательное место текстового файла "C:\\ntw\\Win32\\Debug\\top.txt"
если испоьзуешь целевую папку текстового файла в директории исполняемого файла то указывать путь совсем не обязательно.
зачем так много Мемо? а не проще динамический ТЛист .
Едит тут тоже совсем лишний.
потом меняешь название файла и применяешь ренейм. и все прекрасно работает.
И программа в две строчки.
я так понял что есть такая идея последить сколько раз была запущена программа?
но для подсчета количества стартов программы можно использовать файл инициализации. и при каждом старте программа сама будет знать какое имя файла и тем самым увеличив на еденицу переименовывает сам файл и сохраняет очередной номер в файле инициализации.
нет смысла загромождать программу лишними действиями.

Добавлено через 36 минут
пример с файлом инициализации
нет под рукой компилятора состряпал на коленке.
для первого старта обязательно должен быть файл 0.тхт вместе с исполняемым файлом.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <vcl.h>
#pragma hdrstop
#include <IdGlobal.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include <IniFiles.hpp> // для создания ini files
TForm1 *Form1;
TIniFile *Ini  = new TIniFile(NULL);// файл инициализации программы
 
//--------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
int count = 
Ini->ReadInteger("Settings","Start",0);// здесь 0 если нет файла инициализации на диске то по дефолту будет загружен файл с именем 0(т.е. первый старт программы)
 
int new_count = count+1;// увеличиваю на 1.
 
RenameFile(IntToStr(count)+".txt",IntToStr(new_count)+".txt");// rename("oldname.txt", "newname.txt");
 
Ini->WriteInteger("Settings","Start",new_count);// и сохраняем новое имя файла для следующего старта.
 
Application->Terminate();
 
}
//---------------------------------------------------------------------------
Добавлено через 1 час 29 минут
P.S.
Нашел твою тему на другом форуме.
с тем же примером.
там ты сам сказал что решил проблему.


По умолчанию
Цитата:
Сообщение от Serge_Bliznykov
МегаМодератор
СуперМодератор Посмотреть сообщение

стоп. значит, файл текстовый один, и имя у него строго числовое?

voytik
проблему решил, мне пришло известие, что текст будет один и тот же до и после числа. так что это я и сам на изи сделаю.
другое дело было бы, если бы до и после числа изменялось имя постоянно, вот тут бы я не смог уже ничего сделать по не опытности

И это значит что мой пример лишний?
но на том форуме никто ничего не предложил существенного!
покажи тогда решение чтоб если кому надо мог воспользоваться в своих решениях.
для этого и существует форум.
2
0 / 0 / 1
Регистрация: 12.05.2015
Сообщений: 60
26.10.2017, 12:51  [ТС]
Цитата Сообщение от lifeforce Посмотреть сообщение
И это значит что мой пример лишний?
все равно, огромное спасибо за помощь)
а проблема решилась просто и легко, поскольку я узнал, что имя файла будет до и после цифры одинаковое - я просто поставил в оглавлении файла при создании оного до переменной и после нее в кавычках нужные слова, вот и все.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2017, 12:51
Помогаю со студенческими работами здесь

по порядковому номеру
составить программу, которая бы по порядковому номеру месяца выдавала, к какому времени года он относится

Удаление элемента стека по порядковому номеру
1. Добавление элемента в стек. 2. Поиск элемента в стеке по значению. 3. Процедура освобождения памяти занятой стеком 4. ...

Реализация поиска по порядковому номеру в ListBox
public Form1() { InitializeComponent(); } private void button1_Click(object...

Добавление строки в таблицу по порядковому номеру
INSERT INTO &quot;sd4_Banner&quot; (&quot;klass_id&quot;,&quot;Container_id&quot;,&quot;Title&quot;,&quot;IsHidden&quot;,&quot;SortOrder&quot; ) VALUES (5459,102,'cqwe',False,select(select...

Сохранение картинок в директории по порядковому номеру
Проблема в следующем как переименовать и сохранить изображения при парсинге видео вот в таком виде /images/01/1.jpg /images/01/2.jpg...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru