|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Исключение при использовании исходника с этого сайта
Скопировал код отсюда: http://delphisources.ru/pages/faq/ba...lude_dirs.html (получить список подкаталогов в папке)
Происходит Read Access Violation при вызове процедуры InsDirs. Причем происходит сразу после вызова, т.е. после выполнения строки InsDirs(root + '\', OutPaper.Count, Root, OutPaper); Я перемещал описание этой процедуры перед GetTreeDirs, как и положено, но не помогло. В чем проблема? |
#2
|
|||
|
|||
Вообще, такая ошибка обычно происходит при обращении к несуществующему объекту или в облась защищенной памяти.
Подозреваю, что у вас просто не создан объект Strs (см в примере использования). |
#3
|
|||
|
|||
Действительно, забыл создать объект. Но теперь другая проблема - процедура возвращает пустую Strs, хотя подкаталоги есть.
|
#4
|
|||
|
|||
Ну, скорее всего, опять что-то не так сделал.
Хотя, ИМХО, приведенный код слишком сложный. Можно и короче написать. |
#5
|
|||
|
|||
Для этой процедуры нужен модуль UDBF.FillTreeViewWithFiles, подключит его не удается и непонятно откуда его брать.
На сайте есть еще один исходник http://www.delphisources.ru/pages/fa...t_subdirs.html Но там есть неизвестная функция AddDirSeparator, которая нигде не описана. Видимо тоже нужен какой то модуль... |
#6
|
|||
|
|||
Госпадя!!!
Код:
procedure GetDirsList(root : String; var list : TStringList); var i : Integer; F : TSearchRec; begin list.add(root); i := FindFirst(IncludeTrailingPathDelimeiter(root) + '*.*',faAnyFile,F); While i = 0 Do Begin If ((F.Attr And fadirectory) <> 0) And (F.Name <> '.') And (F.Name <> '..') Then GetDirsList(IncludeTrailingPathDelimeiter(root) + F.Name,list); i := FindNext(F); End; FindClose(F); end; Все. При вызове вернет тебе в списке все папки. |
#7
|
|||
|
|||
За код, конечно, спасибо, но не работает. list.add(root) не добавляет ничего в список.
|
#8
|
||||
|
||||
А у вас какая ОС ?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
|||
|
|||
Цитата:
А вот ненадо!!! Все работает!!! Еще раз код с примером: Код:
procedure GetDirsList(root : String; var list : TStringList); var i : Integer; F : TSearchRec; begin list.add(root); i := FindFirst(IncludeTrailingPathDelimiter(root) + '*.*',faAnyFile,F); While i = 0 Do Begin If ((F.Attr And fadirectory) <> 0) And (F.Name <> '.') And (F.Name <> '..') Then GetDirsList(IncludeTrailingPathDelimiter(root) + F.Name,list); i := FindNext(F); End; FindClose(F); end; procedure TForm1.Button1Click(Sender: TObject); var S : TStringList; begin S := TStringList.Create; GetDirsList('d:',S); memo1.Lines.Assign(S); S.Free; end; |
#10
|
|||
|
|||
Сорри, действительно работает. Просто впервые столкнулся с листами, не разобрался еще.
|