![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про поиск папок [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