Re[2]: Новости дискуссионного листа "Программирование. Форум !!!"
Здравствуйте !
> Сегодня все это применил в своем алгоритме все заработало ОК.
> До этого у меня был свой алгоритм но по сравнению с вашим он более
> тяжеловесный и запутанный и надежды на него еще меньше. Так что быдем
> считать что с этим разобрались
>
> VVV> BOOL CopyFile(
> VVV> LPCTSTR lpExistingFileName,
> VVV> LPCTSTR lpNewFileName,
> VVV> BOOL bFailIfExists
> VVV> );
>
>
> VVV> BOOL CopyFileEx(
> VVV> LPCTSTR lpExistingFileName,
> VVV> LPCTSTR lpNewFileName,
> VVV> LPPROGRESS_ROUTINE lpProgressRoutine,
> VVV> LPVOID lpData,
> VVV> LPBOOL pbCancel,
> VVV> DWORD dwCopyFlags
> VVV> );
>
> это для копирования а для удаления?
Это для копирования.
CopyFile просто копирует файл.
Например :
::CopyFile("c:\\file_exist.txt", "d:\\new_file.txt", TRUE);
скопирует файл c:\\file_exist.txt в d:\\new_file.txt причем
если d:\\new_file.txt уже есть, то вернет FALSE.
Если бы последний параметр был FALSE, то если бы d:\\new_file.txt
уже существовал, то функция бы его переписала.
С CopyFileEx все немного сложнее, в нее в качестве параметра
lpProgressRoutine
передается указатель на функцию вида :
DWORD CALLBACK CopyProgressRoutine(
LARGE_INTEGER TotalFileSize,
LARGE_INTEGER TotalBytesTransferred,
LARGE_INTEGER StreamSize,
LARGE_INTEGER StreamBytesTransferred,
DWORD dwStreamNumber,
DWORD dwCallbackReason,
HANDLE hSourceFile,
HANDLE hDestinationFile,
LPVOID lpData
);
то есть функцию обратного вызова, которая вызывается переодически из
CopyFileEx.
Для перемещения файла есть функции :
BOOL MoveFileEx(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
DWORD dwFlags
);
и
BOOL MoveFileWithProgress(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
LPPROGRESS_ROUTINE lpProgressRoutine,
LPVOID lpData,
DWORD dwFlags
);
для удаления есть :
BOOL DeleteFile(
LPCTSTR lpFileName
);
тут все просто - передается имя файла, который надо удалить.
В MFC есть класс CFile. У него есть несколько статических функций.
Функция
static void PASCAL CFile::Remove(
LPCTSTR lpszFileName
);
удаляет файл. То есть :
CFile::Remove("c:\\asd.txt"); удалит c:\\asd.txt
и есть функция
static void PASCAL CFile::Rename(
LPCTSTR lpszOldName,
LPCTSTR lpszNewName
);
она переименовывает файл :
CFile::Rename("c:\\asd.txt", "c:\\qwe.txt"); переименует c:\\asd.txt в
c:\\qwe.txt
Вот такие дела.
Если надо, могу потом быстренько примерчики накрапать.
Vic.
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru