Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокировка папки после создания [D7, WinXP]


Страницы:   1 2

ANB ©   (2005-04-25 16:55:00) 

Создаю папку CreateDirectory, затем, не выходя из свое проги, пытаюсь удалить ее

lpFileOp.Wnd := 0;
lpFileOp.wFunc := FO_DELETE;
lpFileOp.pFrom := PChar(sSource);
lpFileOp.pTo := nil;
lpFileOp.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or FOF_NOERRORUI;
lpFileOp.fAnyOperationsAborted := False;
lpFileOp.hNameMappings := nil;
lpFileOp.lpszProgressTitle := 'TestSoft : Удаление файлов';
Err := SHFileOperation (lpFileOp);
if (Err <> 0) then begin
 sErrMsg := SysErrorMessage(Err);
 Result := 'Ошибка при удалении файла/папки "'
 + sSource
 + '" ('
 + IntToStr(Err) + ') "'
 + sErrMsg + '"';
end;
- ничего не выходит и код ошибки не расшифровывается (1026).
Но если выйти/зайти, то все удаляется. Похоже на блокировку папки (не закрыт хендл), только откуда она берется ?


alpet   (2005-04-26 11:07:00) [21]

Попробуй по шаблону создавать:
CreateDirectoryEx( '.', PChar (sSource), nil);


ANB   (2005-04-26 09:25:00) [22]


> Вывод: Err := GetLastError, а не SHFileOperation.
- не, это я пробовал, грит, что нету ошибки. Видно, ошибка не OS. А может я зря пытаюсь удалять SHFileOperation ? Правда, он и пустую папку не удаляет . . . Может я с CreateDirectory намутил ?
Вот так делаю :

if (not CreateDirectory(PChar(sSource), nil)) then begin
 Err := GetLastError;
 sErrMsg := SysErrorMessage(Err);
 Result := 'Ошибка при создании папки "'
 + sSource
 + '" ('
 + IntToStr(Err) + ') "'
 + sErrMsg + '"';
end;
. Может права надо задать вместо nil ? Папка почему то получается с флагом ReadOnly.


VMcL   (2005-04-25 18:25:00) [23]

>> ANB ©   (25.04.05 16:55)

> ничего не выходит и код ошибки не расшифровывается (1026).

Вероятно, потому что нужно почитать справку по SHFileOperation, где написано:
Return Value
Returns zero if successful, or nonzero otherwise.


Вывод: Err := GetLastError, а не SHFileOperation.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо