Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Вниз

Аттрибуты функции FindFirst - не могу понять   Найти похожие ветки 

 
Андрей Сенченко   (2002-11-27 13:08) [0]

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec
): Integer;


не понятно вот что : запуск с аттрибутом
faDirectory $00000010 Directory files

вот в этом примере
if findfirst("C:\*.*",faDirectory,workdir) = 0
then ...

выдает кроме директорий еще и файлы, содержащиеся в корне C:\

кто подскажет - в чем я не прав ?

Спасибо


 
McSimm   (2002-11-27 13:13) [1]

Все правильно:
The Attr parameter specifies the special files to include in addition to all normal files.


 
Воропай Андрей   (2002-11-27 13:21) [2]

Вот этот пример работаен нормально.

procedure TForm1.Button1Click(Sender: TObject);
var
sr: TSearchRec;
FileAttrs: Integer;
begin
StringGrid1.RowCount := 1;
FileAttrs := 0;
FileAttrs := FileAttrs + faDirectory;

with StringGrid1 do
begin
RowCount := 0;

if FindFirst("c:\*.*", FileAttrs, sr) = 0 then

begin
repeat
if (sr.Attr and FileAttrs) = sr.Attr then
begin
RowCount := RowCount + 1;
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
end;


 
two_beer   (2002-11-27 13:23) [3]

Чтобы отбирать только директории проверяй атрибуты:

if (workdir.Attr and faDirectory) = workdir.Attr then
begin
// здесь получаешь имена найденных директорий, включая . и ..
end;


 
Андрей Сенченко   (2002-11-27 13:26) [4]

ок. Подойдем с другой стороны : нужно выбрать ТОЛЬКО директории.

TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;

Здесь ( уже после пробежки по директори поиска ) вроде как ничего не выцепишь.
Значит должен быть аттрибут выбора ( маска ), по которой выбираются только директории. Или нет ?



 
Андрей Сенченко   (2002-11-27 13:27) [5]

Все. Понял. Всем спасибо


 
Dmitriy Polskoy   (2002-11-27 13:32) [6]

А так будешь искать только ВЛОЖЕННЫЕ директории

procedure TForm1.SelectFiles(ASrsPath: String);
var
DSearchRec: TSearchRec;
FindResult: Integer;

function IsDirNotation(ADirName: string): Boolean;
begin
Result := (ADirName = ".") or (ADirName = "..");
end;
begin
FindResult := FindFirst(ASrsPath + "*.*", faDirectory, DSearchRec);
while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
IsDirNotation(DSearchRec.Name) then
FindResult := FindNext(DSearchRec);
end;
end;



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

Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
3-14390
Fbist
2002-11-15 13:21
2002.12.05
Привет всем мастерам!


8-14699
Groove
2002-06-19 15:37
2002.12.05
mediaplayer & tarckbar


14-14758
Alibaba
2002-11-13 15:37
2002.12.05
Дед Мороз


14-14785
Neox
2002-11-13 22:42
2002.12.05
Сглаживание краев


1-14611
litex
2002-11-24 20:56
2002.12.05
Как изменить шрифт установленный по умолчанию ...





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