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

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

Вопрос про поиск папок [D4, Win95/98]


Lexan ©   (2002-02-05 18:59:00) 

Как узнать есть ли в какой-то заданной папке другие папки, а также их названия?


Lexan   (2002-02-07 15:19:00) [1]

Большое спасибо все, а особеноо Фэ: все заработало!


Фэ   (2002-02-05 20:50:00) [2]

Функция работает рекурсивно и дает все каталоги, начиная с верхнего.
Как ограничить текущим - ясно, надеюсь.
Наличие папок lst.Count > 0 или результат функции.


Фэ   (2002-02-05 20:46:00) [3]

Лови из загашника

function CreateDirList_(const ParentDirectory: string;
DL: TStringList): Integer;
var
Status: Integer;
SearchRec: TSearchRec;
begin
Result := 0;
Status := FindFirst(SlashSep_(ParentDirectory, "*.*"), faDirectory, SearchRec);
try
while Status = 0 do
begin
if (SearchRec.Attr and faDirectory = faDirectory) then
begin
if (SearchRec.Name <> ".") and (SearchRec.Name <> "..") then
begin
DL.Add(SlashSep_(ParentDirectory,SearchRec.Name));
Inc(Result);
Result := Result + CreateDirList_(DL[DL.Count-1],DL);
end;
end;
Status := FindNext(SearchRec);
end;
finally
FindClose(SearchRec);
end;
end;

SlashSep_() - добавляет слэш при его отсутствии

function SlashSep_(const Path, S: String): String;
begin
if AnsiLastChar(Path)^ <> "\" then
Result := Path + "\" + S
else
Result := Path + S;
end;


Lexan   (2002-02-05 20:40:00) [4]

procedure TForm1.DelDir(Dir:String); var
sSR :TSearchRec;
IRes :Integer;
begin
IRes:=FindFirst(Dir+"*",faDirectory,sSR);
while IRes=0 do begin
DelFiles(Dir+sSr.name+"\");
RmDir(Dir+sSr.name);
IRes:=FindNext(sSR);
end;
FindClose(sSR);
end;
Пробовал FindFirst(Dir+"*.*",$FF,sSR); Результат тот же.



Андрей Сенченко   (2002-02-05 20:22:00) [5]

А КОД ?


Lexan   (2002-02-05 20:07:00) [6]

При вызове процедуры FindNext происходит ошибка "File access denied", а TSearchRec.Name="."


Андрей Сенченко   (2002-02-05 19:35:00) [7]

На метку тома через FindFirst FindNext попасть на так то просто


yaJohn   (2002-02-05 19:31:00) [8]

Pardon, ne sovsem korrektno, pod poniatie "faila" popadet v etom sluchae, naprimer, metka toma.... Prosto vidral iz staroy programmi kusok koda, tam eshe obrabotka bila. Stoit posmotret" TSearchRec.Attr


yaJohn   (2002-02-05 19:20:00) [9]

procedure TForm1.Go(path);
var sr: TSearchRec;
i,j: integer;
begin
if findfirst(path+"*.*",$FF,sr)=0 then
repeat
if (sr.Attr and faDirectory)<>0
then begin
if sr.Name[1]<>"." then Go(path+sr.Name+"\");
// delaem chegoto s folderom
end
else // delaem chegoto s failom
until (findnext(sr)<>0);
end;


Андрей Сенченко   (2002-02-05 19:19:00) [10]

в атрибутах: faDirectory


Дучфт   (2002-02-05 19:14:00) [11]

С помощью этих процедур я пробовал, но ничего не получилось: работал только поиск файлов в заданной папке.


yaJohn   (2002-02-05 19:06:00) [12]

FindFirst
FindNext


Наверх

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