Доброе время суток, уважаемы форумчане. Возникла необходимость заполнить главное меню найденными директориями с их субдиректориями. Директорий будет немного. Непонятным чудом пришёл к такому коду(сильно не пинайте)
Код:
procedure SearchDirectory(MainMenu: TMainMenu; I: Int32; Directory: String);
var
MenuItem: TMenuItem;
SearchRec: TSearchRec;
begin
if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
Repeat
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and
((SearchRec.Attr and faDirectory) = faDirectory) then
begin
MenuItem:=TMenuItem.Create(MainMenu);
MenuItem.Caption:=SearchRec.Name;
MainMenu.Items[i].Add(MenuItem);
SearchDirectory(MainMenu, I + 1, Directory + SearchRec.Name + '\');
end;
Until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
Вызываю процедуру так
Код:
SearchDirectory(MainMenu, 0, '');
Наставьте неуча на путь истинный. Как правильно сделать рекурсию, что бы подпункты MainMenu тоже заполнялись?