Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать количество каталогов


qqpp ©   (2006-08-22 08:58:00) 

Надо узнать количество подкаталогов в каталоге D:\temp , и если количество не нулевое то создать каталог с именем sel(i:=i+1), а имя созданного каталога поместить в лейбел.


Сергей М.   (2006-08-22 12:38:00) [1]


> qqpp   (22.08.06 12:15) [4]


На вкладке "Win 3.1" есть компонент TDirectoryListBox, приспособить его под свои нужды проще простого - для этого даже не нужно знать ни про какие FindFirst/FindNext.

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

см. юнит FileCtrl.pas и реализацию метода TDirectoryListbox.ReadDirectoryNames - это как раз то что тебе нужно)


PSPF2003   (2006-08-22 12:28:00) [2]


> Плохиш ©

Поддерживаю!


Плохиш   (2006-08-22 12:27:00) [3]


> qqpp   (22.08.06 12:15) [4]
> а кто может примерно набрасать, я просто немогу разобратся
> как их (findFirst + findNext) пременить....
> плиииз

В связи с тем, что фирма Борланд включила пример использования этих функций в справку, то делаем вывод, что автор ветки полный ламер и халявщик. А ламер, как известно, маст дай!


DiamondShark   (2006-08-22 12:22:00) [4]

Говори честно: мне лень разобраться как их применить.


PSPF2003   (2006-08-22 12:20:00) [5]

Вот тебе маленький примерчик... Разберись :)

procedure TFastForm.DynBuild(Item: TMenuItem; Directory: string);
var
 res: Integer ;
 SearchRec: TSearchRec ;
 it, it2, it3, it4 : TMenuItem ;
 first: Boolean ;
 List : TStringList;
 i : Integer;
begin
 List := TStringList.Create;
 DeleteItem(Item, True);
/////////////////////////////////////////////////////
 it3 := TMenuItem.Create(Item);
 it3.Caption := FormatPath(Directory) ;
 it3.Hint := Directory;
 it3.OnClick := UrlClick;
 it3.ImageIndex := 1;
 Item.Add(it3);
 it3 := TMenuItem.Create(Item);
 it3.Caption := '-' ;
 it3.Hint := Directory;
 Item.Add(it3);
/////////////////////////////////////////////////////
 Application.ProcessMessages;
/////////////////////////////////////////////////////
 if (Directory '') and (Directory[Length(Directory)] '\') then
  Directory := Directory + '\';
/////////////////////////////////////////////////////
 res := FindFirst(Directory + '*.*', faAnyFile, SearchRec);
 first := True;
 while res = 0 do begin
   if (SearchRec.Name '.') and (SearchRec.Name '..') then begin
     if first then
       Item.Items[0].Visible := False;
     if (SearchRec.Attr and faDirectory) = faDirectory then begin
       it := TMenuItem.Create(Item);
       it.Caption := SearchRec.Name;
       it.Hint := Directory + SearchRec.Name;
       it.OnClick := DirectoryClick;
       it.ImageIndex := 0;
       Application.ProcessMessages;
       Item.Add(it);
       it2 := TMenuItem.Create(it);
       with it2 do begin
         Caption := RC_EmptyItem;
         ImageIndex := 0;
         Visible := false;
         Application.ProcessMessages;
         Enabled := False;
         Tag := 1;
       end;
       it.Add(it2);
     end
     else begin
        if Pos(AnsiUpperCase(ExtractFileExt(SearchRec.Name)), AnsiUpperCase(Ext)) = 0 then
          List.Add(Directory + SearchRec.Name);
       end;
     end;
     res := FindNext(SearchRec);
   end;
   FindClose(SearchRec);
   it3 := TMenuItem.Create(Item);
   it3.Caption := '-' ;
   it3.ImageIndex := -1;
   Item.Add(it3);
   it4 := TMenuItem.Create(Item);
   it4.Caption := 'Ôàéëû' ;
   it4.Visible := false;
   for i := 0 to List.Count - 1 do begin
     it := TMenuItem.Create(Item);
     it.Caption := ChangeFileExt(ExtractFileName(List.Strings[i]) + ExtractFileExt(List.Strings[i]), '');
     it.OnClick := UrlClick;
     it.Hint := List.Strings[i];
     if  ExtractFileExt(AnsiUpperCase(List.Strings[i])) = '.EXE' then
       it.Bitmap := (ExtractBMP(it.Hint));
     it4.Add(it);
     it4.Visible := true;
  end;
   it4.ImageIndex := 2;
   Item.Add(it4);
   List.Free;
end;


qqpp   (2006-08-22 12:15:00) [6]

а кто может примерно набрасать, я просто немогу разобратся как их (findFirst + findNext) пременить....
плиииз


tButton   (2006-08-22 10:08:00) [7]

ну да =)
но там он упоминается в примерах =)
а. ещё надо было ссылку на TSearchRec дать )


umbra   (2006-08-22 10:03:00) [8]

ну и FindCloseнапоследок :)


tButton   (2006-08-22 08:59:00) [9]

findFirst + findNext


Наверх

Титульная страница Поиск, карта сайта Написать письмо