Вниз
Скачать: CL | DM;

Подскажите, плиз как искать папки   Найти похожие ветки 

← →
Алексей   (2004-06-22 01:35) [0]

Когда я использую FindFirst с атрибутом faDirectory, то находятся не только директории, но и файлы, а файлы мне не нужны. Как это можно сделать


← →
Игорь   (2004-06-22 07:26) [1]

Нужно делать проверку. Например

var
SR:TSearchRec;

begin
if FindFirst("c*.*",faDirectory,SR) = 0 then
repeat
if Sr.Attr = faDirectory then чего-то делаем...
until FindNext(SR) <> 0;
FindClose(SR);
end;

Без этого не обойтись.


← →
Игорь   (2004-06-22 07:29) [2]

Я сам недавно с такой же проблемой столкнулся


← →
MBo ©   (2004-06-22 07:35) [3]

>if Sr.Attr = faDirectory
это некорректная проверка. см. FAQ по findfirst


← →
Игорь   (2004-06-22 07:40) [4]

ну можно так:
if (SR.Attr and faDirectory) = srAttr then ...


← →
Anatoly Podgoretsky ©   (2004-06-22 09:16) [5]

Игорь   (22.06.04 07:40) [4]
Точно такая же не корректная проверка. см. FAQ по findfirst


← →
TUser ©   (2004-06-22 09:37) [6]

Да вообще - проще из справки скопировать.


← →
TASADAR   (2004-06-23 09:03) [7]


function TForm1.FindFolders (Path: string): boolean;
var
 F: TSearchRec;
 Attr: Integer;
begin
 Result := false;
 Attr := faDirectory + faReadOnly + faHidden + faSysFile + faArchive;
 FindFirst(Path, Attr, F);

 if F.name <> "" then
 begin
   if (F.name <> "..") and (F.name <> ".") and ((F.Attr = 16) or (F.Attr = 17)
   or (F.Attr = 18) or (F.Attr = 48) or (F.Attr = 51) or (F.Attr = 19)
   or (F.Attr = 49) or (F.Attr = 50)) then
      begin
        // что-то делаю
        Result := True;
      end
   else
      begin
        while FindNext(F) = 0 do
          begin
            if (F.name <> "..") and (F.name <> ".") and ((F.Attr = 16) or (F.Attr = 17)
            or (F.Attr = 18) or (F.Attr = 48) or (F.Attr = 51) or (F.Attr = 19)
            or (F.Attr = 49) or (F.Attr = 50)) then
               begin
                 // что-то делаю
                 Inc(i1);
               end;
          end
      end;
 end;
 FindClose(F);
end;



← →
Anatoly Podgoretsky ©   (2004-06-23 11:35) [8]

Ужасы нашего городка.


← →
alex_shpak   (2004-06-23 13:48) [9]

По-моему, вместо (F.Attr =...)or(F.Attr=...)or ... нужно писать (F.Attr and faDirectory)<>0. Так сказано в help"е по TSearchRec и так проще.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.019 c
14-1087990751
DimKa
2004-06-23 15:39
2004.07.11
Вот только что зарплату повысили.


3-1087306890
Piter
2004-06-15 17:41
2004.07.11
Выбор уникальных полей


1-1088076832
JIurafdsfsdt
2004-06-24 15:33
2004.07.11
В какой тип данных сохранить содержимое RichEdit часть 2


14-1086722980
Nic
2004-06-08 23:29
2004.07.11
Восттановление СССР?


1-1088344486
dido
2004-06-27 17:54
2004.07.11
Как в Label писать более одной строки?




   Наверх