Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Robby, по имени, с рекурсией:
читать дальше »
Код: Выделить весь код
procedure SearchForFolder(const RootFolder, SearchFolderName: String; var ResultPathArray: array of String);
var
    NewSearchPath: String;
    FindRec: TFindRec;
    Len: Integer;
begin
    NewSearchPath := AddBackslash(RemoveBackslash(RootFolder));

    if FindFirst(NewSearchPath + '*.*', FindRec) then
    try

        repeat
            if (FindRec.Name <> '.') and (FindRec.Name <> '..') then
            if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY then
            begin
                if FindRec.Name = SearchFolderName then
                begin
                    Len := GetArrayLength(ResultPathArray);
                    SetArrayLength(ResultPathArray, Len+1);
                    ResultPathArray[Len] := NewSearchPath + FindRec.Name;
                end
                else
                SearchForFolder(NewSearchPath + FindRec.Name, SearchFolderName, ResultPathArray);
            end;
        until not FindNext(FindRec);

    finally
        FindClose(FindRec);
    end;
end;


procedure InitializeWizard();
var
    AArray: array of String;
    i: Integer;
begin
    SearchForFolder('C:\Program Files (x86)\CAPCOM', 'nativePC', AArray);
    
    for i := 0 to GetArrayLength(AArray)-1 do MsgBox(AArray[i], mbInformation, MB_OK);
end;
[/font]

по завершении входной массив содержит пути к папкам с искомым именем
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:23, 05-06-2013 | #575