2013-02-25 1 views
0

Я пытаюсь получить подкаталоги каталога в Дельфах, я использую эту функцию:буквы диска удаляется из пути, когда retrieiving подкаталогов

procedure GetSubDirectories(const directory : string; list : TStrings) ; 
var 
    sr : TSearchRec; 
begin 
    try 
    if FindFirst(IncludeTrailingPathDelimiter(directory) + '*.*', faDirectory, sr) < 0 then 
     Exit 
    else 
    repeat 
     if ((sr.Attr and faDirectory <> 0) AND (sr.Name <> '.') AND (sr.Name <> '..')) then 
     List.Add(IncludeTrailingPathDelimiter(directory) + sr.Name) ; 
    until FindNext(sr) <> 0; 
    finally 
    SysUtils.FindClose(sr) ; 
    end; 
end; 

Тогда я попытался что-то вроде:

procedure TForm1.FormCreate(Sender: TObject); 
    var 
    folders: TStringList; 
    begin 
    folders := TStringList.Create; 
    try 
     GetSubDirectories('c:\', folders); 
     ShowMessage(folders.ValueFromIndex[0]); 
    finally 
     FreeAndNil(folders); 
    end; 
    end; 

И строка, показанная в окне сообщения, например: «: \ Program Files». Я попытался добавить breakpoitn в List.Add в процедуру GetSubDirectories, а затем var выглядит как «C: \ Program Files».

Почему буква письма удаляется в окне сообщения?

ответ

2

ValueFromIndex требует использования пар ключ-значение на TStringList, что вы ищете, вероятно, Strings свойство TStringList который также Собственость по умолчанию класса.

Таким образом, вы можете использовать folders[0] или folders.Strings[0]

+0

Спасибо, это было так просто. – Trevor

+0

Это может быть хорошая ссылка, чтобы начать работу http://www.delphibasics.co.uk/RTL.asp?Name=TStringList – zz1433

Смежные вопросы