Форум: "Основная";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];
ВнизВопрос про поиск папок Найти похожие ветки
← →
Lexan (2002-02-05 18:59) [0]Как узнать есть ли в какой-то заданной папке другие папки, а также их названия?
← →
yaJohn (2002-02-05 19:06) [1]FindFirst
FindNext
← →
Дучфт (2002-02-05 19:14) [2]С помощью этих процедур я пробовал, но ничего не получилось: работал только поиск файлов в заданной папке.
← →
Андрей Сенченко (2002-02-05 19:19) [3]в атрибутах: faDirectory
← →
yaJohn (2002-02-05 19:20) [4]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;
← →
yaJohn (2002-02-05 19:31) [5]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
← →
Андрей Сенченко (2002-02-05 19:35) [6]На метку тома через FindFirst FindNext попасть на так то просто
← →
Lexan (2002-02-05 20:07) [7]При вызове процедуры FindNext происходит ошибка "File access denied", а TSearchRec.Name="."
← →
Андрей Сенченко (2002-02-05 20:22) [8]А КОД ?
← →
Lexan (2002-02-05 20:40) [9]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:46) [10]Лови из загашника
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;
← →
Фэ (2002-02-05 20:50) [11]Функция работает рекурсивно и дает все каталоги, начиная с верхнего.
Как ограничить текущим - ясно, надеюсь.
Наличие папок lst.Count > 0 или результат функции.
← →
Lexan (2002-02-07 15:19) [12]Большое спасибо все, а особеноо Фэ: все заработало!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c