Hola,
Echa un vistazo a
este Hilo, que aparece enlazado abajo, en esta misma página, en los "temas similares", lo que significa que el
buscador de los Foros pueden proporcionarte información sobre lo que necesitas.
Actualización: Aquí te dejo cierto código fuente que tal vez puedas terminar de adaptar a tus necesidades:
Código Delphi
[-]
procedure ListaDirectorios(var lista:
TStrings; dirPadre: string);
var
SR: TSearchRec;
begin
dirPadre := IncludeTrailingPathDelimiter(dirPadre);
FindFirst(PChar(dirPadre + '*'), faDirectory, SR);
repeat
lista.Add(SR.Name);
until (FindNext(SR) <> 0);
FindClose(SR);
end;
Ejemplo de llamada al procedimiento anterior:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
directorios: TStrings;
begin
directorios := TStringList.Create;
ListaDirectorios(directorios, 'C:\Archivos de programa');
ShowMessage(directorios.Text);
directorios.Free;
end;