OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 24 Июнь, 2019 22:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как создать каталог?
СообщениеДобавлено: Воскресенье, 11 Май, 2014 22:54 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Да! Такой вот нубский вопрос :D
Смотрю в доки, но в упор не вижу.
Мне нужно просто создать каталог без вопросов к юзеру.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Воскресенье, 11 Май, 2014 23:17 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Покурил исходники Files...
Что-то кроме как в Files.dir.New нигде больше создания каталога не нашел O_o

ps Это жесть, товарищи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 14:49 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
В итоге сделал вот так:
Код:
PROCEDURE CreateDir(VAR loc: Files.Locator; IN path: ARRAY OF CHAR);
VAR
   newloc: Files.Locator;
   file: Files.File;
BEGIN
   newloc := loc.This(path);
   file := Files.dir.New(newloc, Files.dontAsk);
END CreateDir;


Это правильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 15:02 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Попробовал, работает. Создаёт каталоги как на абсолютном пути, так и относительном (в текущей папке ББ).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 19:46 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
Код:
    PROCEDURE CreateDir(IN path: ARRAY OF CHAR);
    VAR
       file: Files.File;
    BEGIN
       file := Files.dir.New(Files.dir.This(path), Files.dontAsk);
    END CreateDir;

Вот так короче.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 19:59 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
Цитата:
Module Files provides the abstractions necessary to handle most aspects of a hierarchical file system.
Заложенная в Files модель --- более общая нежели ФС в виде дерева каталогов. Если пользоваться исключительно Files, необходимости создавать "каталоги" не возникает. Поэтому и операции такой нет. И "это жесть" тут не применимо.

P.S.
Код:
   PROCEDURE omcFSBus.CreateDir (loc: Files.Locator; OUT done: BOOLEAN);
      VAR   f: Files.File;
   BEGIN
      f := Files.dir.New(loc, Files.dontAsk);
      IF f # NIL THEN f.Close; f := NIL END;
      done := loc.res = 0
   END CreateDir;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 20:24 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Евгений Темиргалеев писал(а):
Заложенная в Files модель --- более общая нежели ФС в виде дерева каталогов. Если пользоваться исключительно Files, необходимости создавать "каталоги" не возникает. Поэтому и операции такой нет. И "это жесть" тут не применимо.

Все же думаю, что вы ошибаетесь. Не нужно придумывать то, чего нет. Это либо элементарный недосмотр, либо лень, либо необоснованное игнорирование особенностей целевой среды. В Oberon V4 и S3 есть средства для работы каталогами. Отсутствие таких средств оправдано только в оригинальном Oberon V5.

Цитата:
необходимости создавать "каталоги" не возникает

А мне значит показалось, что мне нужно создавать каталоги?

ps Можете меня закидать помидорами, но на мой взгляд должно быть так: http://golang.org/pkg/os/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 21:11 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
На стороне Евгения. Борис, почитай про локатор. Files вообще не обязательно должен работать с диском или с папками ОС, это может быть локатор где-то в распределенной сети или в базе данных, как Петр делали с Иваном К. (где-то читал недавно).

Цитата:
В Блэкбоксе место приписки файла (папка) представляется объектом-локатором (locator).
Особый фабричный объект (directory) предоставляет процедуру, которая создает локатор в соответствии с описанием пути по правилам базовой платформы. Большинство остальных действий с фабричными объектами требуют локатора в качестве параметра, чтобы определить, в какой папке нужно выполнить действие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Понедельник, 12 Май, 2014 21:56 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Написал длинный опус и удалил. Надоело.

Скажу лишь одно... С чего вы решили, что я не читал про локаторы? Я все эти доки еще в 2005 (если мне не изменяет память) распечатал на бумаге и прочитал.

Кто тут сделал традицией такую манеру ведения диалога?

Иван, я знаю что такое локатор. Попробуйте догадаться почему я в контексте сих познаний написал предыдущее сообщение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 05:37 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
Файловый каталог в системе Оберон всегда рассматривался как реестр имён:
N. Wirth, J. Gutknecht 'Project Oberon' писал(а):
"A file system must not only provide the concept of a sequence with its accessing mechanism, but also a registry. This implies that files be identified, that they can be given a name by which they are registered and retrieved. The registry or collection of registered names is called the file system's directory. Here we wish to emphasize that the concepts of files as data structure with associated access facilities on the one hand, and the concept of file naming and directory management on the other hand must also be considered separately and as independent notions. In fact, in the Oberon system their implementation underscores this separation by the existence of two modules: Files and FileDir."
В Blackbox есть базовая реализация Files, где управление реестрами имён на целевой платформе сделано автоматическим. Если потребуются вытребеньки (а создание пустого каталога, по-моему, очевидная вытребенька, так как файловая система без файла смысла не имеет), то к нашим услугам возможности расширения, о которых прямо сказано в документации:
BlackBox, System\Docu\Files.odc писал(а):
A directory object represents all accessible files (not just one subdirectory), independent of their location in the file hierarchy. There is exactly one file hierarchy. However, every BlackBox service may implement its own file directory object. Such an object represents exactly the same file hierarchy, but may provide different ways to look up files, e.g., by applying default search paths, or it may define a current directory relative to which path names are evaluated, etc.
Пожалуйста, берите и расширяйте. Переделайте Files.Locator.This так, чтобы он автоматически создавал пустой каталог, и будет вам щастье. Только не надо тащить особенности целевой платформы в платформо-независимый слой BlackBox.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 11:38 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2338
ilovb писал(а):
Кто тут сделал традицией такую манеру ведения диалога?

Иван, я знаю что такое локатор. Попробуйте догадаться почему я в контексте сих познаний написал предыдущее сообщение.

Борис, я немного может недописал, краткость не всегда хороша. Тоже читал как-то давно про локатор и не все понял, а недавно перечитывал (уже зная про замены реализации HostFiles и т.п.) и только сейчас начинаю понимать по-настоящему в чем суть задумки абстрактного слоя. Локатор как-бы является коммуникатором с каким угодно местом спобобным хранить информацию, он и ошибки операций в себе хранит...

Получается вся дискуссия сводится к тому обоснованно или необоснованно игнорируется особенность целевой среды... так как целевой среды в абстактном слое не должно быть по определению, то я склоняюсь к тому, что это обосновано. Это расширяет границы сознания программиста. Теоретически локатор может быть в распределенном хранилище, если это поддерживает реализация, например, Files.dir.This("sftp://user1@server1:3333/home/users/data/").


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 11:50 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Насчет традиций диалога - это в точку :)

Я долго не мог привыкнуть к миксу файлов и локаторов; до сих пор теряюсь.

Иван Денисов писал(а):
Files.dir.This("sftp://user1@server1:3333/home/users/data/")

Пример интересный, но лишь подтверждающий терминологическую путаницу. Особенно, если брать во внимание значение слова файл.

Термин "файл" перегружен смыслами.

Вопрос Бориса предельно корректен и для программиста, знакомого с мэйнстрим-программированием, работа с файлами в ББ, как минимум, вызывает недоумение. Впрочем, это беда не только ББ, но и других систем, вводящих абстракцию над файловой системой. См., например, проблемы потоков в Лиспе (не многозадачность).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:00 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Иван Кузьмицкий писал(а):
Пожалуйста, берите и расширяйте. Переделайте Files.Locator.This так, чтобы он автоматически создавал пустой каталог, и будет вам щастье. Только не надо тащить особенности целевой платформы в платформо-независимый слой BlackBox.

Отдельный модуль для работы с каталогами и все. Не нужно Files трогать. Пусть остается абстрактным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:04 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
ilovb писал(а):
Отдельный модуль для работы с каталогами и все. Не нужно Files трогать. Пусть остается абстрактным.
На каждый платформо-зависимый чих модулей не напасёшься. Суть ББ не в предоставлении готовых возможностей на все случаи жизни.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:06 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Иван Денисов писал(а):
Борис, я немного может недописал, краткость не всегда хороша. Тоже читал как-то давно про локатор и не все понял, а недавно перечитывал (уже зная про замены реализации HostFiles и т.п.) и только сейчас начинаю понимать по-настоящему в чем суть задумки абстрактного слоя. Локатор как-бы является коммуникатором с каким угодно местом спобобным хранить информацию, он и ошибки операций в себе хранит...

И еще раз. Я знаю что такое локатор. Как это поможет в моей задаче? У меня задача не с адресацией файлов связана, а с управлением каталогами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:10 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Иван Кузьмицкий писал(а):
ilovb писал(а):
Отдельный модуль для работы с каталогами и все. Не нужно Files трогать. Пусть остается абстрактным.
На каждый платформо-зависимый чих модулей не напасёшься. Суть ББ не в предоставлении готовых возможностей на все случаи жизни.


Ну тогда нужно выпилить пол ББ. Там ведь столько всего платформо-зависимого. На целевой платформе может не оказаться видеокарты. Давайте выкинем все связанное с гуем.

Думаете я кривляюсь? Ни капли. Где это ББ без обычной файловой системы работает? Имхо там же, где и без видеокарты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:15 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
ilovb писал(а):
На целевой платформе может не оказаться видеокарты. Давайте выкинем все связанное с гуем.
Ты будешь смеяться, но в ББ возможен и такой случай. Порт в нём абстрактный, и окна можно печатать на принтере.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:19 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
LOL
Даже теряюсь что ответить :lol:

Иван, ты сделал платформо-независимость самоцелью. Это ошибка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:25 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
ilovb писал(а):
LOL
Даже теряюсь что ответить :lol:

Иван, ты сделал платформо-независимость самоцелью. Это ошибка.


Речь про расширяемость. Тебе надо управлять каталогами? Напиши доп. сервис, расширяющий базовые возможности. Нужна более тонкая подстройка базовых интерфейсов к задаче? Пожалуйста, замени реализацию.

А качественная расширяемая система как бы не очень предполагает зависимость от ОС. Где ошибка-то? Я напрограммировал вычисление, и оно должно сохраниться на любой платформе. Мой софт имеет абсолютную ценность, и если при смене платформы эта ценность обнуляется - то значит, что-то не так в консерватории.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать каталог?
СообщениеДобавлено: Вторник, 13 Май, 2014 12:32 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1523
Иван Кузьмицкий писал(а):
А качественная расширяемая система как бы не очень предполагает зависимость от ОС. Где ошибка-то? Я напрограммировал вычисление, и оно должно сохраниться на любой платформе. Мой софт имеет абсолютную ценность, и если при смене платформы эта ценность обнуляется - то значит, что-то не так в консерватории.

С чего ты взял, что мне надо чтобы мое изделие работало на утюгах? Мне и не нужно чтобы оно работало где то кроме Mac/Linux/Windows с обычной файловой системой. Да даже и за пределами очень сложно представить себе ФС без каталогов. Разве что на отладочной плате Spartan 3.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB