Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

5.8K
04 июля 2005 года
ivan1985
42 / / 29.06.2005
Почему-то таким способом получаеися копировать только в рабочую дирикторию, когда в savedialog выбираю в другой файл не копируется:

SaveDialog1->Execute();
AnsiString nstr1=SaveDialog1->FileName;
CopyFile("lastloaded.dat",nstr1.c_str(),1);
310
04 июля 2005 года
fellow
853 / / 17.03.2003
CopyFile, насколько понимаю, из Win32 API?
Тогда последний параметр определяет поведение функции в случае, если файл, куда осуществляется копирование, уже существует: TRUE - если файл существует, то копирования не происходит; FALSE - если файл существует, то он будет перезаписан. У вас, насколько понимаю, файл-приёмник существует, потому последний параметр должен быть 0:
CopyFile("lastloaded.dat",nstr1.c_str(),0);

Пожалуй, так.
5.8K
04 июля 2005 года
ivan1985
42 / / 29.06.2005
Цитата:
Originally posted by fellow
CopyFile, насколько понимаю, из Win32 API?
Тогда последний параметр определяет поведение функции в случае, если файл, куда осуществляется копирование, уже существует: TRUE - если файл существует, то копирования не происходит; FALSE - если файл существует, то он будет перезаписан. У вас, насколько понимаю, файл-приёмник существует, потому последний параметр должен быть 0:
CopyFile("lastloaded.dat",nstr1.c_str(),0);

Пожалуй, так.



нет, файла с таким именем нету - а все равно не копируется (кроме как в рабочую директорию)

310
05 июля 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by ivan1985
нет, файла с таким именем нету - а все равно не копируется (кроме как в рабочую директорию)


А имя файла-приёмника путь содержит? И куда этот путь ведёт?

5.8K
05 июля 2005 года
ivan1985
42 / / 29.06.2005
Цитата:
Originally posted by fellow
А имя файла-приёмника путь содержит? И куда этот путь ведёт?



Содержит, и вроде как правильное: "C:\\Rab_prog\\temparch1.rtm"

А как нибудь еще можно скопировать файл?

310
05 июля 2005 года
fellow
853 / / 17.03.2003
Попробуйте так, и приведите сообщение об ошибке.
Код:
SaveDialog1->Execute();
AnsiString nstr1=SaveDialog1->FileName;
if(0==CopyFile("lastloaded.dat",nstr1.c_str(),0))
 {
  LPVOID lpMsgBuf;
  FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM |
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    (LPTSTR) &lpMsgBuf,
    0,
    NULL);
  MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
  LocalFree( lpMsgBuf );
 }
585
05 июля 2005 года
honeybeer
297 / / 06.09.2004
Цитата:
Originally posted by ivan1985
Содержит, и вроде как правильное: "C:\\Rab_prog\\temparch1.rtm"

А как нибудь еще можно скопировать файл?



Шалишь брат! Все копируется

 
Код:
bool bSuccess = CopyFile("C:/boot.ini", "D:/boot.ini", 0);
5.8K
05 июля 2005 года
ivan1985
42 / / 29.06.2005
Цитата:
Originally posted by fellow
Попробуйте так, и приведите сообщение об ошибке.
Код:
SaveDialog1->Execute();
AnsiString nstr1=SaveDialog1->FileName;
if(0==CopyFile("lastloaded.dat",nstr1.c_str(),0))
 {
  LPVOID lpMsgBuf;
  FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM |
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    (LPTSTR) &lpMsgBuf,
    0,
    NULL);
  MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
  LocalFree( lpMsgBuf );
 }



Сообщение об ошибке такое:
"The system cannot find the file specified"
и что это значит?

2honeybeer
так и у меня нормально копируется:
CopyFile("C:\\Io.sys","C:\\Io__2.sys",0);
а так не хочет(только в рабочую директорию):
SaveDialog1->Execute();
AnsiString nstr1=SaveDialog1->FileName;
if(0==CopyFile("lastloaded.dat",nstr1.c_str(),0))

488
05 июля 2005 года
Mоngооsе
465 / / 01.04.2005
После вызова SaveDialog, меняется текущий каталог для файла. Поэтому lastloaded.dat в CopyFile нужно указать с полным путем.
310
05 июля 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Mоngооsе
После вызова SaveDialog, меняется текущий каталог для файла. Поэтому lastloaded.dat в CopyFile нужно указать с полным путем.


Поддерживаю.

585
06 июля 2005 года
honeybeer
297 / / 06.09.2004
Ну нельзя же так прямолинейно. Ну прям как дети :D

 
Код:
String FullPath;
SaveDialog1->Execute();
FullPath = SaveDialog1->InitialDir + SaveDialog1->FileName;
bool bSuccess = CopyFile("C:/boot.ini", FullPath.c_str(), 0);


Если нужно указывать только директорию, надо немного доработать. Мне лениво, да и не надо. Дальше сам...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог