Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Вниз

удаление файлов и папок   Найти похожие ветки 

 
Andy Eremin   (2003-02-27 07:27) [0]

Уважаемые Мастера!
Как удалить папку и находящиеся в ней файлы?
Функции FindNext почему-то отбирает не все файлы:
FindFirst(GetCurrentDir+"\*.*", faAnyFile, sr);
Но даже после удаления в цикле всех файлов (хотя это глупость, конечно, т.к. в дальнейшем я не буду знать точное кол-во файлов в папке) папка не удаляется (хотя с заранее пустой папкой эта функция работает):
RemoveDir(GetCurrentDir);


 
Verg   (2003-02-27 08:15) [1]


> Функции FindNext почему-то отбирает не все файлы:
> FindFirst(GetCurrentDir+"\*.*", faAnyFile, sr);


Вы верите в чудеса? :)

Если нет, то надо бы привести полный код своей процедуры и спросить: "где тут ошибка?"

А вот в наборе Rx в модуле fileutil есть функция:

function ClearDir(const Path: string; Delete: Boolean): Boolean;
const
{$IFDEF WIN32}
FileNotFound = 18;
{$ELSE}
FileNotFound = -18;
{$ENDIF}
var
FileInfo: TSearchRec;
DosCode: Integer;
begin
Result := DirExists(Path);
if not Result then Exit;
DosCode := FindFirst(NormalDir(Path) + "*.*", faAnyFile, FileInfo);
try
while DosCode = 0 do begin
if (FileInfo.Name[1] <> ".") and (FileInfo.Attr <> faVolumeID) then
begin
if (FileInfo.Attr and faDirectory = faDirectory) then
Result := ClearDir(NormalDir(Path) + FileInfo.Name, Delete) and Result
else if (FileInfo.Attr and faVolumeID <> faVolumeID) then begin
if (FileInfo.Attr and faReadOnly = faReadOnly) then
FileSetAttr(NormalDir(Path) + FileInfo.Name, faArchive);
Result := DeleteFile(NormalDir(Path) + FileInfo.Name) and Result;
end;
end;
DosCode := FindNext(FileInfo);
end;
finally
FindClose(FileInfo);
end;
if Delete and Result and (DosCode = FileNotFound) and
not ((Length(Path) = 2) and (Path[2] = ":")) then
begin
RmDir(Path);
Result := (IOResult = 0) and Result;
end;
end;


...так она нормально работает.


 
AGGRESSOR   (2003-02-27 15:19) [2]

ИМХО, лучше SHFileOperation - объем кода уменьшится раз в 10...



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.016 c
1-54617
Top Gun
2003-04-07 19:42
2003.04.17
Свойства в классах


14-54821
Opuhshii
2003-03-31 20:01
2003.04.17
Очень нехоршие люди!


1-54659
Sherlock
2003-04-04 11:42
2003.04.17
Как узнать положение курсора в MEMO?


7-54900
MAPIIIAJL
2003-02-23 12:09
2003.04.17
Вывод работы с COM портом в отдельный поток...


14-54826
vanek8
2003-03-27 09:11
2003.04.17
QReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский