Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95

Копирование файла

19.09.2015, 19:16. Показов 1570. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Столкнулся с небольшой проблемой.
Надо скопировать файл находящийся в папке с программой, но не совсем понятно как это сделать с приведением типов

C++
1
2
3
4
5
    AnsiString filename1, filename2 ;
    TDateTime NowTime = Now();
 
    filename1 =(Application->ExeName)+"\links.ini";
    filename2 =(Application->ExeName)+"\links "+NowTime+".ini";
Хочу использовать CopyFile(file, file2, 0 ); , но в filename1 filename2 лежать пути вида C:\, а для CopyFile надо вроде иначе.

Может есть альтернативные функции?

Добавлено через 7 минут
Дополнение

Значение переменных переписал так
C++
1
2
    filename1 ="links.ini";
    filename2 ="links  "+NowTime+".ini";
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2015, 19:16
Ответы с готовыми решениями:

Копирование текстового файла из рабочего файла
- Здравствуйте Всем! Подскажите, пожалуйста, как сделать, чтобы из рабочего файла prog.exe, написанного на BCB6 скопировать текстовый...

копирование файла
Вообщем перерыл кучю кода , разных тем. И никакой нехочет работать (Builder 2012) void __fastcall TForm1::Button1Click(TObject...

Копирование файла
Подскажите пожалуйста, как мне скопировать файл с одного диска на другой.

8
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
19.09.2015, 20:48
Можно и так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int  MoveFiles( AnsiString slSourceDir, AnsiString slTargetDir, bool toCopy = true  )
{
    SHFILEOPSTRUCT sh;
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT |  FOF_FILESONLY;
    sh.wFunc = toCopy ? FO_COPY : FO_MOVE;
    sh.pFrom =  slSourceDir.c_str();
    sh.pTo = slTargetDir.c_str();
    sh.hNameMappings =  NULL;
    sh.lpszProgressTitle = NULL;
    return SHFileOperation ( &sh  );
}
 
void __fastcall TForm1::Button1Click(TObject  *Sender)
{
    //copy all from program  files
    if(!MoveFiles("c:\\program files\\*.*",  "c:\\temp"))
    ShowMessage("чики пики");
    else  ShowMessage("не вышло");
 
}
В функции MoveFiles первый параметр что копировать,второй куда копировать
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
19.09.2015, 22:17  [ТС]
У меня не заработало.
MoveFiles - как подключается?

Пробовал добавить
C++
1
2
3
4
5
6
7
8
9
10
11
int  MoveFiles( AnsiString slSourceDir, AnsiString slTargetDir, bool toCopy = true  )
{
    SHFILEOPSTRUCT sh;
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT |  FOF_FILESONLY;
    sh.wFunc = toCopy ? FO_COPY : FO_MOVE;
    sh.pFrom =  slSourceDir.c_str();
    sh.pTo = slTargetDir.c_str();
    sh.hNameMappings =  NULL;
    sh.lpszProgressTitle = NULL;
    return SHFileOperation ( &sh  );
}
но Embarcadero RAD Studio стал ругаться на типы

Добавлено через 45 минут
Пробую так
Пример 1
C++
1
2
3
4
5
        AnsiString file1, file2 ;
        file1 ="links.ini";
        file2 ="links_"+NowTime.DateString()+"_"+NowTime.TimeString()+".ini";
 
        CopyFileTo("links.ini", file2);
В результате - файл не копируется.

Пример2
C++
1
2
3
4
5
        AnsiString file1, file2 ;
        file1 ="links.ini";
        file2 ="links_.ini";
 
        CopyFileTo("links.ini", file2);
В результате - файл копируется.

Подскажите пожалуйста, как мне при копировании к имени файла добавить дату и время?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
19.09.2015, 22:21
adm1nspb,
Тогда подкоректируй саму функцию, на вот так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int  MoveFiles( AnsiString slSourceDir, AnsiString slTargetDir, bool toCopy = true  )
{
 
    SHFILEOPSTRUCT sh;
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT |  FOF_FILESONLY;
    sh.wFunc = toCopy ? FO_COPY : FO_MOVE;
 
    WideString st1(slSourceDir);
    WideString st2(slTargetDir);
 
    sh.pFrom =  st1.c_bstr();
    sh.pTo =    st2.c_bstr();
    sh.hNameMappings =  NULL;
    sh.lpszProgressTitle = NULL;
    return SHFileOperation ( &sh  );
}
//---------------------------------------------------------------------------

Что бы ее подключить.переходишь на вкладку h. и после строчки " __fastcall TForm1(TComponent* Owner);"

вставляешь

C++
1
 int  MoveFiles( AnsiString slSourceDir, AnsiString slTargetDir, bool toCopy = true  );

В итоге должно получиться так


C++
1
2
3
4
5
6
7
8
9
10
11
12
...
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
 int  MoveFiles( AnsiString slSourceDir, AnsiString slTargetDir, bool toCopy = true  );
 
 
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Добавлено через 2 минуты
что бы изменить имя файла, уже после того как перекинишь

C++
1
RenameFile(OldName,NewName);
OldName - это старое имя файла.
NewName - это новое имя файла.
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
19.09.2015, 22:39  [ТС]
Не сработало.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
19.09.2015, 22:48
Цитата Сообщение от adm1nspb Посмотреть сообщение
Не сработало.
в чем это выражается?
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
19.09.2015, 22:56  [ТС]
[ilink32 Error] Error: Unresolved external 'TParserLinksForm::MoveFiles(System::Ans iStringT<0>, System::AnsiStringT<0>, bool)' referenced from C:\USERS\..............OBJ
[ilink32 Error] Error: Unable to perform link

Не могли бы вы подсказать как поправить имя файла в моем варианте (Пример 1) чтобы нормально копировалось?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
19.09.2015, 23:01
Могу предположить что Вы не верно указываете путь
1) Физ диск должен начинаться с " C:\\,"
2) Директории должны разделяться на одинарным слешом, а двойным
0
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
19.09.2015, 23:22  [ТС]
Похоже дело было в имени файла(((
Блин...столько времени ушло(((((

Вот РАБОЧЕЕ решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
        AnsiString DateTime, Compare, Change;
        DateTime = NowTime.DateTimeString();
 
        for (int i = 1;i < DateTime.Length()+1;i++)
        {
            if (DateTime[i] == '.' ) { DateTime[i] = '-'; }
            if (DateTime[i] == ':' ) { DateTime[i] = '-'; }
            if (DateTime[i] == ' ' ) { DateTime[i] = '_'; }
        }
 
 
        CopyFileTo ("links.ini", "links_" + DateTime + ".ini");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2015, 23:22
Помогаю со студенческими работами здесь

Копирование Файла
Как скопировать 123.TXT с диска D удаленной машины на мой диск C через ClientSocket и ServerSocket

Копирование файла по сети
Доброго времени! Есть проблемка при копировании файла по локалке, пишу: if(!MoveFiles(&quot;\\Queen\\c\\Jag\\1.txt&quot;, ...

Копирование из файла doc
Нужно скопировать текст из файла .doc в RichEdit Заранее благодарен за помощь :)

Копирование видео файла
Подскажите с помощью какой команды можно скопировать видео файл? Или же сохранить его из медиаплеера?

Резервное копирование файла БД
делаю резервное копирование фала бд.но ничего не копируется TDateTime CurrentDate = Date(); BOOL...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник 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),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru