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 );
}
копирование файла
SaveDialog1->Execute();
AnsiString nstr1=SaveDialog1->FileName;
CopyFile("lastloaded.dat",nstr1.c_str(),1);
Тогда последний параметр определяет поведение функции в случае, если файл, куда осуществляется копирование, уже существует: TRUE - если файл существует, то копирования не происходит; FALSE - если файл существует, то он будет перезаписан. У вас, насколько понимаю, файл-приёмник существует, потому последний параметр должен быть 0:
CopyFile("lastloaded.dat",nstr1.c_str(),0);
Пожалуй, так.
Цитата:
Originally posted by fellow
CopyFile, насколько понимаю, из Win32 API?
Тогда последний параметр определяет поведение функции в случае, если файл, куда осуществляется копирование, уже существует: TRUE - если файл существует, то копирования не происходит; FALSE - если файл существует, то он будет перезаписан. У вас, насколько понимаю, файл-приёмник существует, потому последний параметр должен быть 0:
CopyFile("lastloaded.dat",nstr1.c_str(),0);
Пожалуй, так.
CopyFile, насколько понимаю, из Win32 API?
Тогда последний параметр определяет поведение функции в случае, если файл, куда осуществляется копирование, уже существует: TRUE - если файл существует, то копирования не происходит; FALSE - если файл существует, то он будет перезаписан. У вас, насколько понимаю, файл-приёмник существует, потому последний параметр должен быть 0:
CopyFile("lastloaded.dat",nstr1.c_str(),0);
Пожалуй, так.
нет, файла с таким именем нету - а все равно не копируется (кроме как в рабочую директорию)
Цитата:
Originally posted by ivan1985
нет, файла с таким именем нету - а все равно не копируется (кроме как в рабочую директорию)
нет, файла с таким именем нету - а все равно не копируется (кроме как в рабочую директорию)
А имя файла-приёмника путь содержит? И куда этот путь ведёт?
Цитата:
Originally posted by fellow
А имя файла-приёмника путь содержит? И куда этот путь ведёт?
А имя файла-приёмника путь содержит? И куда этот путь ведёт?
Содержит, и вроде как правильное: "C:\\Rab_prog\\temparch1.rtm"
А как нибудь еще можно скопировать файл?
Попробуйте так, и приведите сообщение об ошибке.
Цитата:
Originally posted by ivan1985
Содержит, и вроде как правильное: "C:\\Rab_prog\\temparch1.rtm"
А как нибудь еще можно скопировать файл?
Содержит, и вроде как правильное: "C:\\Rab_prog\\temparch1.rtm"
А как нибудь еще можно скопировать файл?
Шалишь брат! Все копируется
Код:
bool bSuccess = CopyFile("C:/boot.ini", "D:/boot.ini", 0);
Цитата:
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 );
}
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))
После вызова SaveDialog, меняется текущий каталог для файла. Поэтому lastloaded.dat в CopyFile нужно указать с полным путем.
Цитата:
Originally posted by Mоngооsе
После вызова SaveDialog, меняется текущий каталог для файла. Поэтому lastloaded.dat в CopyFile нужно указать с полным путем.
После вызова SaveDialog, меняется текущий каталог для файла. Поэтому lastloaded.dat в CopyFile нужно указать с полным путем.
Поддерживаю.
Код:
String FullPath;
SaveDialog1->Execute();
FullPath = SaveDialog1->InitialDir + SaveDialog1->FileName;
bool bSuccess = CopyFile("C:/boot.ini", FullPath.c_str(), 0);
SaveDialog1->Execute();
FullPath = SaveDialog1->InitialDir + SaveDialog1->FileName;
bool bSuccess = CopyFile("C:/boot.ini", FullPath.c_str(), 0);
Если нужно указывать только директорию, надо немного доработать. Мне лениво, да и не надо. Дальше сам...