Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.005 c
14-79437
XeN
2002-01-06 01:46
2002.02.25
command line


1-79335
sammy
2002-02-08 08:24
2002.02.25
помогите узнать размер папки!


14-79427
Любитель Делфи
2002-01-05 15:23
2002.02.25
Проблемма с исходником С++ Bilder и Delphi


1-79352
metrA
2002-02-07 14:00
2002.02.25
DBGrid зафиксировать колонку


4-79510
Electric
2001-12-24 05:24
2002.02.25
кнопкой превать цикл





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