![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Список каталогов [D6, D7, Win2k, WinXP]
RainKMM © (2006-09-28 13:43:00)Здравствуйте!
Подскажите пожалуйста, как получить список всех подкаталогов в каталоге?
RainKMM (2006-09-28 16:07:00) [21]Zeqfreed, спасибо помогло, сейчас зазбераюсь как ети пути прописать явно в memo, чтоб потом использовать.
Elen (2006-09-28 15:56:00) [22]Так убрать const
Zeqfreed (2006-09-28 15:54:00) [23]> [11] Elen © (28.09.06 15:49)
> Тогда добавь от себя
> if sRootDir[length(sRootDir)-1]<>'\' thensRootDir:=sRootDir+'\';
А компилятор ругнется, что, мол, нельзя присваивать значение константам ;)
Elen (2006-09-28 15:49:00) [24]Если не ошибаюсь AddDirSeparator добавляет взад директории "\".
Тогда добавь от себя
if sRootDir[length(sRootDir)-1]<>'\' thensRootDir:=sRootDir+'\';
и
sSearchPath := sRootDir;
Zeqfreed (2006-09-28 15:48:00) [25]> [7] RainKMM (28.09.06 15:39)
> нашел на delphi world такую процедуру но она ругаэтся на
> AddDirSeparator
Замени на IncludeTrailingPathDelimiter.
> в 10 строках можно допустить кучу ошибок.
Если допускать в 10 строчках кучу ошибок, тогда надо не компоненты брать, а разбираться в ошибках.
RainKMM (2006-09-28 15:45:00) [26]Э народ, я помощи прошу, а ви соритесь :(
Elen (2006-09-28 15:41:00) [27]
> Zeqfreed
в 10 строках можно допустить кучу ошибок. Вообще я компоненты придлагаю как вариант. никто не спорит что лучше будет на API, но мне кажется как раз для новичков сначала проще было-бы не заморачиваться на внутренностях. А вообще это дело вкуса...
RainKMM (2006-09-28 15:39:00) [28]нашел на delphi world такую процедуру но она ругаэтся на AddDirSeparator, а я понять не могу как от етого избавиться.
procedure GetSubDirs(const sRootDir: string; slt: TStrings);
var
srSearch: TSearchRec;
sSearchPath: string;
sltSub: TStrings;
i: Integer;
begin
sltSub := TStringList.Create;
slt.BeginUpdate;
try
sSearchPath := AddDirSeparator(sRootDir);
if FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
repeat
if ((srSearch.Attr and faDirectory) = faDirectory) and
(srSearch.Name <> '.') and
(srSearch.Name <> '..') then
begin
slt.Add(sSearchPath + srSearch.Name);
sltSub.Add(sSearchPath + srSearch.Name);
end;
until (FindNext(srSearch) <> 0);
FindClose(srSearch);
for i := 0 to sltSub.Count - 1 do
GetSubDirs(sltSub.Strings[i], slt);
finally
slt.EndUpdate;
FreeAndNil(sltSub);
end;
end;
Zeqfreed (2006-09-28 15:37:00) [29]> [5] Elen © (28.09.06 15:35)
Использовать сторонний компонент ради того, чтобы не писать 10 строк кода?
Elen (2006-09-28 15:35:00) [30]
> MsGuns
Ну почему же? У меня никогда не было тарблов со сторонними компонентами. Как правило все мои проги содержат чего-то из инета и ни разу не глюкнули на других тачках (если конечно я их четко отлаживаю). Сторонние компоненты - это возможность избавить программистов от рутины. Разве не так?
RainKMM (2006-09-28 15:32:00) [31]Че то я со все етим разобратся не могу? Помогите толковой инфой по етой теме
Johnmen (2006-09-28 14:11:00) [32]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1159384035&n=18
MsGuns (2006-09-28 14:09:00) [33]>Elen © (28.09.06 13:47) [1]
>Попробуй DirectoryListBox. или сторонними компонентами типа LMD или FindFirst...FindNext
Я очень извиняюсь, но Вы не в первый раз советуете ерунду новичкам. Для того, чтобы научиться плавать вовсе необязательно ехать на Гавайи. LMD - это всего-навсего набор красивых побрякушек, большинство из которых не представляют из себя никакой практической ценности. Кроме того, у нее совсем слабо с преемственностью версий и, как следствие, гарантированы траблы при переносе проектов с ПК на ПК.
Для сабжа достаточно просто почитать основы работы с файлами в Дельфи.
Или тот же FindFirst+F1
Elen (2006-09-28 13:47:00) [34]Попробуй DirectoryListBox. или сторонними компонентами типа LMD или FindFirst...FindNext