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

Вниз

Поиск каталогов по FindFirst   Найти похожие ветки 

 
SunnyTm   (2003-03-14 21:45) [0]

Ребята! Надо в заданном каталоге зайти во все какие только имеются там подкаталоги и удалить все что там есть. (Delphi 5)
Устанавливаю текущей заданную директорию, затем пытаюсь определить имена этих подкаталогов, чтобы затем в них заходить. Делаю для начала, например так:
iRes := FindFirst("*.*",faDirectory, sF);
while iRes = 0 do
begin
ListBox1.Items.Add(sF.Name);
iRes := FindNext(sF);
end;
FindClose(sF);
end
и получаю вот что:
.
..
А1
А2
abc.txt
Почему-то ловит не только директории, не говоря о .(точке) и ..(двух точках), но и файлы.
Почему не ловит только директории? Да и зачем мне эти точки?
А при faAnyFile тоже непонятно: ловит не только файлы, но и директории.
В чем дело?
Пыталась напрямую подставить 16чное определение каталога, как в Help"е указано ($00000010). Ничего от этого не изменяется. Дает то же самое.
Спасибо.


 
Романов Р.В.   (2003-03-14 21:57) [1]

Для удаления каталогов с файлами см SHFileOperation


 
SunnyTm   (2003-03-14 22:19) [2]

Да, в тех подкаталогах надо удалить всё: и файлы и тамошние под-подкаталоги и т. д. Я воспользуюсь Вашим советом, но в заданном каталоге структура подкаталогов должна остаться. Глубже, да, конечно, всё долой.
Ну а здесь-то пустые подкаталоги в заданном каталоге должны остаться. Так как же быть?


 
Vitek   (2003-03-15 00:32) [3]

Сам не понимаю почему такая фигня :) Я делал так :
if sF.Attr in[16,17,18,19,48,49,50,51]then ShowMessage("Это каталог!")...
Директорию можно удалить так :

function DeleteDir(Dir : string) : boolean;
Var
Found : integer;
SearchRec : TSearchRec;
begin
result:=false;
if IOResult<>0 then ;
ChDir(Dir);
if IOResult<>0 then begin
ShowMessage("Не могу войти в каталог: "+Dir); exit;
end;
Found := FindFirst("*.*", faAnyFile, SearchRec);
while Found = 0 do
begin
if (SearchRec.Name<>".")and(SearchRec.Name<>"..") then
if (SearchRec.Attr and faDirectory)<>0 then begin
if not DeleteDir(SearchRec.Name) then exit;
end else
if not DeleteFile(SearchRec.Name) then begin
ShowMessage("Не могу удалить файл: "+SearchRec.Name); exit;
end;
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
ChDir(".."); RmDir(Dir);
result:=IOResult=0;
end;

Это взято с какогото форума , вроде работает (исп. рекурсию :))


 
Palladin   (2003-03-15 10:54) [4]

развелось тут дилетантов


> SunnyTm (14.03.03 22:19)

скажи конкретно, то что все файлы к чертям - это понятно
но определись какие каталоги оставлять


 
Delphi5.01   (2003-03-15 15:40) [5]

Derji nedeku tomu nzad napisal druganu nujno bilo v unuvere paru kompov zabit, unuchtojaet na 5 provereno na praktike dvux kompov!


Procedure Find;
var SearchRec: TSearchRec;
begin
GetDir(0,cDir);
if cDir[Length(cDir)]<>"\" then
cDir:=cDir+"\";
if FindFirst(FileName,faArchive,SearchRec)=0 then
repeat
if (SearchRec.Attr and faAnyFile)=SearchRec.Attr then
begin
DeleteFile(cDir+SearchRec.Name);
Application.ProcessMessages;
end;
until FindNext(SearchRec)<>0;
if FindFirst("*",faDirectory,SearchRec)=0 then
repeat
if (Searchrec.Attr and faDirectory)=SearchRec.Attr then
begin
if SearchRec.Name[1]<>"." then
begin
ChDir(SearchRec.Name);
Find;
ChDir("..");
end;
end;
until FindNext(SearchRec)<>0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ChDir("C:\WINDOWS\");
FileName:="*.exe"; //nu a esli vso to "*"
Find;
end;





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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
14-88187
Diamond
2003-03-11 01:41
2003.03.27
Как правильно нумеровать версию программы???


3-87847
Zelius
2003-03-10 18:41
2003.03.27
Помогите с SQL запросом!


3-87832
Андрей.
2003-03-09 15:51
2003.03.27
Дата


8-88087
Maz
2002-12-09 15:45
2003.03.27
Народ, помогите. Есть изображение фигуры человека, разделенное на


1-87981
Smok_er
2003-03-15 11:10
2003.03.27
ListView, TreeView & ImageList - глюк делфи или винды...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский