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

Вниз

Аттрибуты функции 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-14569
Воропай Андрей
2002-11-25 17:48
2002.12.05
Как победить большой шрифт?


14-14780
Live_Aus_Berlin
2002-11-13 16:46
2002.12.05
У кого нибудь есть исходники проги, которая считает производные


1-14481
gary5555
2002-11-23 10:20
2002.12.05
Как по типу компонента TComboBox вместо текста вставить рисунок.


1-14649
Mic_2000
2002-11-25 15:09
2002.12.05
Как можно вызвать свою функцию описаную в другом юните?


1-14564
ret_Avr
2002-11-24 19:43
2002.12.05
Как StringGrid отправить в Word?