Текущий архив: 2006.09.10;
Скачать: CL | DM;
ВнизКак узнать количество каталогов Найти похожие ветки
← →
qqpp (2006-08-22 08:58) [0]Надо узнать количество подкаталогов в каталоге D:\temp , и если количество не нулевое то создать каталог с именем sel(i:=i+1), а имя созданного каталога поместить в лейбел.
← →
tButton © (2006-08-22 08:59) [1]findFirst + findNext
← →
umbra © (2006-08-22 10:03) [2]ну и
FindClose
напоследок :)
← →
tButton © (2006-08-22 10:08) [3]ну да =)
но там он упоминается в примерах =)
а. ещё надо было ссылку на TSearchRec дать )
← →
qqpp (2006-08-22 12:15) [4]а кто может примерно набрасать, я просто немогу разобратся как их (findFirst + findNext) пременить....
плиииз
← →
PSPF2003 © (2006-08-22 12:20) [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;
← →
DiamondShark © (2006-08-22 12:22) [6]Говори честно: мне лень разобраться как их применить.
← →
Плохиш © (2006-08-22 12:27) [7]
> qqpp (22.08.06 12:15) [4]
> а кто может примерно набрасать, я просто немогу разобратся
> как их (findFirst + findNext) пременить....
> плиииз
В связи с тем, что фирма Борланд включила пример использования этих функций в справку, то делаем вывод, что автор ветки полный ламер и халявщик. А ламер, как известно, маст дай!
← →
PSPF2003 © (2006-08-22 12:28) [8]
> Плохиш ©
Поддерживаю!
← →
Сергей М. © (2006-08-22 12:38) [9]
> qqpp (22.08.06 12:15) [4]
На вкладке "Win 3.1" есть компонент TDirectoryListBox, приспособить его под свои нужды проще простого - для этого даже не нужно знать ни про какие FindFirst/FindNext.
В кр.случае можно взять за основу готовую процедуру у этого компонента, благо исх-ки его имеются.
см. юнит FileCtrl.pas и реализацию метода TDirectoryListbox.ReadDirectoryNames - это как раз то что тебе нужно)
Страницы: 1 вся ветка
Текущий архив: 2006.09.10;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.042 c