shfileoperation delphi коды ошибок
Shfileoperation delphi коды ошибок
Returns zero if successful; otherwise nonzero. Applications normally should simply check for zero or nonzero.
It is good practice to examine the value of the fAnyOperationsAborted member of the SHFILEOPSTRUCT. SHFileOperation can return 0 for success if the user cancels the operation. If you do not check fAnyOperationsAborted as well as the return value, you cannot know that the function accomplished the full task you asked of it and you might proceed under incorrect assumptions.
Do not use GetLastError with the return values of this function.
To examine the nonzero values for troubleshooting purposes, they largely map to those defined in Winerror.h. However, several of its possible return values are based on pre-Win32 error codes, which in some cases overlap the later Winerror.h values without matching their meaning. Those particular values are detailed here, and for these specific values only these meanings should be accepted over the Winerror.h codes. However, these values are provided with these warnings:
—
http://www.podgoretsky.com
| |||||||||||||||
aidynchik Member ������: |
Эксперт Профиль Репутация: 7 Профиль Репутация: нет
Профиль Репутация: нет
Ну так дочитайте до конца что ли:
Эксперт Профиль Репутация: 39
TCHAR *file_for_delete = new TCHAR[str.length()+2]; SetFileAttributes(file_for_delete,FILE_ATTRIBUTE_ARCHIVE); |
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.8.2010
Репутация: нет
Всего: нет
Код |
#include #include |
QString file_for_delete = str;
file_for_delete.append(«69»); // добавляем в конец строки два символа, увеличивая её длину
file_for_delete[file_for_delete.size()-2] = 0; // заменяем два последних символа, которые только что добавили
file_for_delete[file_for_delete.size()-1] = 0; // на ‘\0’
SHFILEOPSTRUCT shfo=<0>;
shfo.wFunc=FO_DELETE;
shfo.pFrom = (wchar_t*)(file_for_delete.utf16());
shfo.fFlags =FOF_NOCONFIRMATION | FOF_SIMPLEPROGRESS | FOF_NOERRORUI | FOF_ALLOWUNDO;
shfo.fAnyOperationsAborted=false;
shfo.hNameMappings=NULL;
shfo.pTo = NULL;
shfo.lpszProgressTitle=NULL;
int res = SHFileOperation (&shfo);
qDebug()
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.
[ Время генерации скрипта: 0.1403 ] [ Использовано запросов: 21 ] [ GZIP включён ] Файловые операции средствами ShellAPI
В данной статье мы подробно рассмотрим применение функции SHFileOperation. Данная функция позволяет производить копирование, перемещение, переименование и удаление (в том числе и в Recycle Bin) объектов файловой системы. Функция возвращает 0, если операция выполнена успешно, и ненулевое значение в противном 🙂 случае. Эта структура выглядит следующим образом: Поля этой структуры имеют следующее назначение:
Разумеется, вам нужно вставить в секцию uses модуль ShellAPI, в котором определена функция SHFileOperation. Обратите внимание, что ни один из флагов не установлен. Если вы хотите не просто удалить файлы, а переместить их в корзину, должен быть установлен флаг FOF_ALLOWUNDO. Выглядит ужасно, но работает. Можно написать красивее, просто лень. И, наконец, функция, удаляющая файлы, переданные ей в списке Names. Параметр ToRecycle определяет, будут ли файлы перемещены в корзину или удалены. Функция возвращает 0, если операция выполнена успешно, и ненулевое значение, если руки у кого-то растут не из того места, и этот кто-то всунул функции имена несуществующих файлов. Вроде все работает. Файлы ‘Test1’ и ‘Test2’ удаляются совсем, без помещения в корзину, несмотря на установленный флаг FOF_ALLOWUNDO. Мораль: при использовании функции SHFileOperation используйте полные пути всегда, когда это возможно. Ну, с удалением файлов разобрались. Теперь очередь за копированием и перемещением. Следующая функция перемещает файлы указанные в списке Src в директорию Dest. Параметр Move определяет, будут ли файлы перемещаться или копироваться. Параметр AutoRename указывает, переименовывать ли файлы в случае конфликта имен. Все в порядке (а кудa ж оно денется). 10.9 Манипуляции с файлами и каталогами с помощью функции ShFileOperation стр.1Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor. Очень широкие возможности по копированию, перемещению, переименованию и удалению файлов и каталогов предоставляет функция API Windows ShFileOperation. В модуле ShellAPI она объявлена следующим образом: FO_COPY Копирование файлов, указанных в поле pFrom, в файл или каталог, указанный полем рТо. FO_DELETE Удаление файлов, указанных в поле pFrom. Поле рТо игнорируется. Поле рЕгот указывает буфер, содержащий имя или имена файлов, с которыми производится заданная операция. Отдельные имена должны разделяться нулевыми символами. Завершаться список имен должен двумя нулевыми символами. Поле рТо указывает буфер, содержащий имя файла или каталога, являющегося приемником. Если в поле 1Т1а£8 указан флаг ЕОЕ_МиЬ,ТГОЕ8ТЕ1Ь,Е8, то буфер может содержать список имен файлов. Отдельные имена должны разделяться нулевыми символами. Завершаться список имен должен двумя нулевыми символами. Поле ГР1а£8 может содержать комбинацию следующих флагов: Сохранить по возможности информацию для отмены операции. Например, при удалении файлов они перемещаются в корзину, из которой их потом можно восстановить. Осуществлять операцию только при задании шаблона «*.*». Отвечать «да для всех» на все вопросы, которые могут задавать диалоги в процессе выполнения операции: об удалении файлов, о создании новых папок и т.д. Не делать запрос о создании нового каталога, если требуемый каталог отсутствует. Не показывать окно с отображением хода процесса. Показывать окно с отображением хода процесса, но не отображать в нем имена файлов. Заполнить поле п№теМаррш£8. Указанный в нем дескриптор должен быть в дальнейшем освобожден функцией 8НРгее№теМаррш£8. В поле fAnyOperationsAborted записи TSHFileOpStruct функция ShFileOpe-ration возвращает true, если выполнение операции было прервано пользователем. Поле hNameMappings содержит указатель на массив записей, содержащий прежние и новые полные имена всех файлов, над которыми проводились операции. Поле IpszProgressTitle содержит указатель текста, помещается в окно отображения процесса при включенном флаге FOF_SIMPLEPROGRESS. 0>
|