Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

Объясните, где ошибка?   Найти похожие ветки 

 
Kolya ©   (2002-06-30 00:45) [0]

function TForm1.GetDirs(dir:string):tstringlist;
var
ts: TSearchRec;
begin
result:=tstringlist.create;
if findfirst(dir+ "*", fadirectory,ts)=0 then
repeat
if (ts.name <> ".") and (ts.name <> "..") then
result.add(ts.name);
until findnext(ts)<>0;
findclose(ts);
end;

по идее фунция должна была бы показывать только папки, но она выдает файлы и папки. Что надо изменить?
Спасибо.


 
Anatoly Podgoretsky ©   (2002-06-30 01:23) [1]

Это не ошибка, выдаются все обычные файлы + папки, как ты заказал
Надо анализировать атттриюут и брать только папки, игнорируя обычные файлы, кроме того у тебя есть еще ошибка, покажет не все папки, например не покажет read only, hidden таковы у тебя флаги, надо заменить на faAnyFile


 
kull ©   (2002-06-30 02:07) [2]


> Anatoly Podgoretsky © (30.06.02 01:23)

А зачем в параметре поиска тогда нужен атрибут fadirectory?


 
Aleks1   (2002-06-30 03:47) [3]

kull © (30.06.02 02:07)
Для того, чтобы функция поиска файлов искала еще и директории (каталоги, папки, мамки , и т.п.)


 
Юрий Зотов ©   (2002-06-30 07:17) [4]

Еще момент - современные Win32 "знают" еще и "дедовский" каталог (три точки). При проверке, пожалуй, стоит учесть и это. В итоге получаем примерно следующее:

if (ts.Attr = faDirectory) and (ts.name[1] <> ".") then ...


 
MBo ©   (2002-06-30 08:57) [5]

надежнее всего проверка
if ((ts.Attr and faDirectory)= faDirectory) and ...
поскольку простая проверка на равенство подведет, например, для скрытой директории


 
Юрий Зотов ©   (2002-06-30 09:14) [6]

Вообще - да, но не в данном случае.
Он не ищет скрытые, read-only и пр. директории, поэтому у него возможно либо равенство, либо не директория. И ничего другого.


 
Anatoly Podgoretsky ©   (2002-06-30 12:23) [7]

kull © (30.06.02 02:07)
Ты видишь что у меня это обозначено жирным + папки

Юрий Зотов © (30.06.02 07:17)
Не согласен, надо все таки проверять как у автора "." и ".." отдельно, иначе не попадут каталоги .ХХХ, ну и про точное равенство аттрибутов MBO указал, конечно можно согласиться с товоим доводом, что ему нужны только обычные каталоги, но я думаю, что у него просто неточная постановка вопроса.

Насчет "..." каталогов, не прояснишь, а то что то я на это ни разу нигде не натыкался.


 
GobliNGuT   (2002-06-30 14:09) [8]

MBo:
>>надежнее всего проверка
>>if ((ts.Attr and faDirectory)= faDirectory) and ...
>>поскольку простая проверка на равенство подведет, например, >>для скрытой директории
Вот мой вариант проверки, меня он не подводил. В этом варианте проверяется только наличие флага каталога, а остальные - неважно.
А перед условием стоит искать все файлы. И этим условием фильтровать нужное.

if (sr.Attr and faDirectory)<>0 then ...

И будет все ...


 
Юрий Зотов ©   (2002-06-30 17:59) [9]

> Насчет "..." каталогов

Это "родитель родителя". Нынешние Win32 такую запись понимают. Не знаю, хранится ли такая ссылка в самом каталоге, но во всяком случае в командной строке это срабатывает - именно так, как сказано в документации. Поэтому надежнее учесть.

Что же касается остального, то вся эта дискуссия не стоит и выеденного яйца - проверять битовые флаги, надеюсь, умеют все. Причем с учетом условий задачи.


 
Anatoly Podgoretsky ©   (2002-06-30 18:15) [10]

Юрий Зотов © (30.06.02 17:59)
Теперь понял, что ты имел ввиду, это относится к шеллу, возврат на несколько уровней выше по количеству точек


 
Kolya ©   (2002-07-01 01:25) [11]

Спасибо огромное, замечательно, теперь все понятно.. Это я не дочитал справку и думал, что параметр fadirectory выдаст только папки.



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

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
8-47621
PaulB
2002-03-07 01:54
2002.07.15
Как работать с pf8bit без ScanLine?


1-47306
CA
2002-06-30 13:01
2002.07.15
Меню


7-47852
Lizard
2002-04-25 21:46
2002.07.15
Как добавить строку в конец текстового файла ?


3-47111
Oleon
2002-06-21 17:17
2002.07.15
Как в процедуре вставить много записей в таблицу?


1-47495
valerchik
2002-07-04 04:57
2002.07.15
Формы в независемых окнах