Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
ВнизПодскажите как удалить папку Найти похожие ветки
← →
lavgirls (2008-07-23 17:21) [0]Подскажите как удалить папку, програмным путем естественно.
← →
Palladin © (2008-07-23 17:22) [1]RemoveDir
← →
lavgirls (2008-07-23 17:25) [2]Благодарствую
← →
lavgirls (2008-07-23 17:37) [3]А содержимое почему не удалается?
← →
sniknik © (2008-07-23 17:41) [4]в сообщении об ошибке которая при этом происходит должно быть написано почему. читай ошибки.
← →
Игорь Шевченко © (2008-07-23 17:41) [5]Попробуй SHFileOperation
← →
Johnmen © (2008-07-23 17:41) [6]
> А содержимое почему не удалается?
А разве должно?
← →
lavgirls (2008-07-23 17:42) [7]было бы что читать
← →
Медвежонок Пятачок © (2008-07-23 17:44) [8]было бы что читать
Понятное дело. Это ж не "мурзилка"
← →
sniknik © (2008-07-23 17:50) [9]если нечего то поможет
GetLastError/SysErrorMessage или RaiseLastOSError, Win32Check.
← →
Johnmen © (2008-07-23 17:53) [10]
> sniknik © (23.07.08 17:50) [9]
> ...то поможет GetLastError/SysErrorMessage или
> RaiseLastOSError, Win32Check.
Ты большой оптимист :)
← →
Renegat © (2008-07-23 17:55) [11]procedure SLE;
var lpMsgBuf: PChar;
begin
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError, LANG_NEUTRAL, @lpMsgBuf, 0, 0);
MessageBox(0, lpMsgBuf, 0, 0);
LocalFree(lpMsgBuf);
end;
Не идеал, конечно, но зато можно будет понять в чём дело. Вызывать сразу после выполнения сбоящей процедуры.
← →
Ega23 © (2008-07-23 17:55) [12]Собственно, ещё после [1] догадывался, что этим не кончится.
Автор, почитай хелп по RemoveDir.
← →
sniknik © (2008-07-23 17:56) [13]> Ты большой оптимист :)
"находит" иногда... ;(
← →
Медвежонок Пятачок © (2008-07-23 17:58) [14]Собственно, ещё после [1] догадывался, что этим не кончится.
А я после [0]
:)))
← →
Медвежонок Пятачок © (2008-07-23 18:03) [15]procedure SLE;
var lpMsgBuf: PChar;
begin
LocalFree(lpMsgBuf);
end;
HLOCAL LocalFree(
HLOCAL hMem // handle of local memory object
);
← →
Медвежонок Пятачок © (2008-07-23 18:06) [16]Хотя гениям конечно простительно. У них D не установлена.
← →
Anatoly Podgoretsky © (2008-07-23 18:11) [17]Совет уже был в [5]
Но его надо повторять как мантру.
> Для всех операций с файлами всегда использовать SHFileOperation
← →
Renegat © (2008-07-23 18:17) [18]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:21) [19]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:23) [20]Удалено модератором
← →
Renegat © (2008-07-23 18:25) [21]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:25) [22]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:26) [23]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:29) [24]Удалено модератором
← →
Renegat © (2008-07-23 18:31) [25]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:32) [26]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:34) [27]Удалено модератором
← →
Renegat © (2008-07-23 18:34) [28]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:38) [29]Удалено модератором
← →
Renegat © (2008-07-23 18:42) [30]Удалено модератором
← →
Медвежонок Пятачок © (2008-07-23 18:44) [31]Удалено модератором
← →
Тын-Дын © (2008-07-23 18:53) [32]Удалено модератором
← →
Anatoly Podgoretsky © (2008-07-23 18:54) [33]Удалено модератором
← →
Anatoly Podgoretsky © (2008-07-23 18:55) [34]Удалено модератором
← →
Тын-Дын © (2008-07-23 18:56) [35]Удалено модератором
← →
Amoeba © (2008-07-23 19:01) [36]Автору вопроса сюда (о SHFileOperation):
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=91
← →
Anatoly Podgoretsky © (2008-07-23 19:09) [37]Удалено модератором
← →
Тын-Дын © (2008-07-23 20:13) [38]Удалено модератором
← →
Denis__ © (2008-07-23 20:20) [39]
procedure DelFolder(sPath : String; var DelFilesCount, DelDirsCount,
NoDelFilesCount, NoDelDirsCount : Integer);
procedure DF(path : String; var DFC, DDC, NDFC, NDDC : Integer);
var
fr : TSearchRec;
begin
FindFirst(path + "\*.*", faAnyFile, fr);
repeat
if (fr.Name <> ".") AND (fr.Name <> "..") AND
(fr.Attr AND faDirectory = faDirectory) then
begin
DF(path + "\" + fr.Name, DFC, DDC, NDFC, NDDC);
try
RmDir(path + "\" +fr.Name);
Inc(DDC);
except
Inc(NDDC)
end;
end;
until FindNext(fr) <> 0;
FindClose(fr);
FindFirst(path + "\*.*", faAnyFile, fr);
repeat
if (fr.Name <> ".") AND (fr.Name <> "..")
AND (fr.Attr AND faDirectory <> faDirectory) then
begin
if DeleteFile(path + "\" + fr.Name) then
Inc(DFC)
else
Inc(NDFC);
end;
until FindNext(fr) <> 0;
FindClose(fr);
end;
begin
DelFilesCount := 0;
DelDirsCount := 0;
NoDelFilesCount := 0;
NoDelDirsCount := 0;
DF(sPath, DelFilesCount, DelDirsCount, NoDelFilesCount, NoDelDirsCount);
end;
Мастера, покритикуйте код, плиз. Только по теме, что можно улучшить, исправить.
← →
Loginov Dmitry © (2008-07-23 22:07) [40]> покритикуйте код, плиз. Только по теме, что можно улучшить,
> исправить.
1) Нет анализа результата функции FindFirst(). Если поиск (вдруг) не начался, то и FindClose() вызывать не следует.
2) Зачем два цикла поиска? Что, одним нельзя обойтись?
3) Функция не удаляет указанную папку. Автор обидется :)
3) Если уж критиковать по полной ;) В чем информативность дополнительных 4х переменный. Можно, чтобы функция возвращала результат, удалось ли удалить содержимое из указанной папки или нет. Еще: каждый раз объявлять 4 переменные - замучаешься. Лучше параметры вместо var сделать PInteger и внутри функции проверять на Assigned().
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.009 c