Главная страница
    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.46 MB
Время: 0.008 c
14-14769
VID
2002-11-13 18:35
2002.12.05
РЕФЕРАТ - 1


1-14596
aterm
2002-11-27 14:55
2002.12.05
Help!


14-14735
Vaddya
2002-11-13 10:18
2002.12.05
Фото на паспорт


14-14741
Мазут Береговой
2002-11-13 20:26
2002.12.05
Где можно скачать MS SQL Server 2000?


1-14669
123000
2002-11-22 15:21
2002.12.05
Resizing





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