OberonCore
https://forum.oberoncore.ru/

Как правильно получить список файлов в папке?
https://forum.oberoncore.ru/viewtopic.php?f=23&t=2124
Страница 1 из 1

Автор:  Виталий [ Четверг, 26 Ноябрь, 2009 12:21 ]
Заголовок сообщения:  Как правильно получить список файлов в папке?

Доброго всем. продолжая изучение Оберона решил попробовать работу с файлами.
В хелпе наткнулся на пример построения дерева.
попробовал сам написать получение списка файлов вот так:
Код:
MODULE MFile;
 IMPORT Files,StdLog,Stores;
VAR
 l:Files.Locator;
 li:Files.LocInfo;
PROCEDURE do*;
BEGIN
 l:=Files.dir.This("c:\temp\");
 li:=Files.dir.LocList(l);
 HALT(0);
END do;
 END MFile.

Но в Trap переменная li равна NIL.
вопрос: Что я не так делаю? (l кстати нормально инициализировался)

Автор:  Евгений Темиргалеев [ Четверг, 26 Ноябрь, 2009 12:40 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Попробуйте так:
Код:
...
 l:=Files.dir.This("c:\temp\"); ASSERT(l.res = 0, 100);
 li:=Files.dir.LocList(l); ASSERT(l.res = 0, 101);
...

Автор:  Виталий [ Четверг, 26 Ноябрь, 2009 13:02 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Евгений, та же история.
Папка такая существует, и файлы там есть...

Автор:  Valery Solovey [ Четверг, 26 Ноябрь, 2009 13:43 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Файлы - это хорошо, но Вы уверены, что там есть поддиректории?

Автор:  Виталий [ Четверг, 26 Ноябрь, 2009 13:50 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Valery Solovey писал(а):
Файлы - это хорошо, но Вы уверены, что там есть поддиректории?


Ах тыж... Точно!!! Там только файлы. нет подкаталогов.
Вот такое вот чудо:
Код:
MODULE MFile;
 IMPORT Files,StdLog,Stores,TextViews,TextModels,TextMappers,
Views,In;
VAR
 l:Files.Locator;
 li:Files.LocInfo;
 lf:Files.FileInfo;
PROCEDURE do*;
 VAR
  w:TextViews.View;
  tm:TextModels.Model;
  txt:TextMappers.Formatter;
  s:ARRAY(200) OF CHAR;
BEGIN
 In.Open;
 In.String(s);
 l:=Files.dir.This(s);
[b] li:=Files.dir.LocList(l);
 lf:=Files.dir.FileList(l); [/b]
 IF  (li#NIL) OR (lf#NIL)  THEN

  tm:=TextModels.dir.New();
  txt.ConnectTo(tm);
  w:=TextViews.dir.New(tm);
  Views.OpenView(w);
 
    WHILE (li#NIL) DO
      txt.WriteString(li.name); txt.WriteLn;
      li:=li.next;
    END;

    WHILE (lf#NIL) DO
      txt.WriteString(lf.name); txt.WriteLn;
      lf:=lf.next;
    END;

 END;
END do;
 
END MFile.
MFile.do;
"c:\temp"

Как раз мне и показало где я ошибался.

Все оказывается просто до безобразия :)

В просо привык в FindFirst который и файлы и папки показывает в куче...

Автор:  Евгений Темиргалеев [ Четверг, 26 Ноябрь, 2009 15:12 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Виталий писал(а):
В хелпе наткнулся на пример построения дерева.

Вы про пример ObxFileTree? ObxLinks не смотрели? Почти то же что у Вас получилось...

Автор:  Виталий [ Четверг, 26 Ноябрь, 2009 15:54 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Цитата:
Вы про пример ObxFileTree? ObxLinks не смотрели?

Однако не добрался еще туда...
Ну зато самостоятельно на своих граблях допер до результа - это плюс :o

Автор:  Евгений Темиргалеев [ Четверг, 26 Ноябрь, 2009 16:07 ]
Заголовок сообщения:  Re: Как правильно получить список файлов в папке?

Виталий писал(а):
Все оказывается просто до безобразия :)
Виталий писал(а):
Цитата:
Вы про пример ObxFileTree? ObxLinks не смотрели?
Однако не добрался еще туда...Ну зато самостоятельно на своих граблях допер до результа - это плюс :o
Зафиксируем в пользу "низкого порога вхождения в ББ". Извиняюсь за оффтоп.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/