OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 23 Апрель, 2024 12:22

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




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Среда, 15 Август, 2007 14:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
В функцию Open первым параметром идёт локатор - т.е. описатель каталога, относительно которого трактуется name.
Если name представляет собой полный путь, то локатор может быть любым, но! - должен таки быть.
Files.dir.This("") - даёт локатор на рабочий каталог среды.

Т.е. один из вариантов:
ObxAscii.Open(Files.dir.This(""), 'c:\TEMP\ttt.txt');
А можно так:
ObxAscii.Open(Files.dir.This("c:\"), 'TEMP\ttt.txt');
а можно так:
ObxAscii.Open(Files.dir.This('c:\TEMP'), 'ttt.txt');


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Четверг, 16 Август, 2007 15:11 

Зарегистрирован: Среда, 15 Август, 2007 13:46
Сообщения: 4
Спасибо, за помощь.

Интересно, что оъяснение сути локатора, встретил не в документации, а на форуме.

Вчера мне удалось избавиться от ошибок. Мне даже кажется, что помогло многократное переписывание кода (скрытые проблемы с кодировками), потому что, первый рабочий вариант зрительно не отличался от того, с чего я начал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Четверг, 16 Август, 2007 15:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А Вы в какой версии среды работаете?
Русские идентификаторы в русифицированной версии проблем никаких вызывать не могут, а вот попутать похожие русские и английские буквы можно вполне...

Однако... если Вы копировали в среду код с русскими буквами откуда-то извне, то действительно, он вставляется уже в Юникоде, и компилятор понимать русские буквы не хочет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Пятница, 17 Август, 2007 09:41 

Зарегистрирован: Среда, 15 Август, 2007 13:46
Сообщения: 4
вот в такой BlackBox.Lyceum
Проект ИНФОРМАТИКА-21 http://www.inr.ac.ru/~info21/

Хотелось не ломать голову, придумывая имена переменным латиницей. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Пятница, 17 Август, 2007 11:38 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
В этой версии как раз можно...

Но про копирование обратите внимание. В среду введена поддержка русских идентификаторов, если они в исходнике лежат в cp1251 (т.е. в младшем байте двухбайтового CHAR). Именно так они и вводятся с клавиатуры в версии 1.5. Если вставляем из буфера обмена, то идёт подъём до Юникода, и компилятор уже не кушает...
Бета 1.6 наконец-то полностью передена на Юникод (т.е. и с клавиатуры набор идёт в Юникоде), но из-за этого неясно пока, как поддержать русские идентификаторы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Среда, 24 Октябрь, 2007 12:49 

Зарегистрирован: Среда, 22 Февраль, 2006 10:35
Сообщения: 144
Откуда: Новочеркасск
Смотрел модуль Files. Не нашел там средств для копирования файлов и изменения их атрибутов. Может чего недоглядел?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Среда, 24 Октябрь, 2007 13:09 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Только WinApi. Кроссплатформенные средства, увы, не введены.
Это общая проблема ББ - либо сверхвысокий уровень абстракций (активные документы и отображения), либо WinApi. Потому что средний уровень абстракций (файлы, окна) сделан узко, в основном для поддержки верхнего уровня. Руки у швейцарцев не дошли.

В новом рантайме мы вводим полный комплект средств по работе с файлами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Четверг, 25 Октябрь, 2007 08:36 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Илья Ермаков писал(а):
В новом рантайме мы вводим полный комплект средств по работе с файлами.


А они будут совместимы с МакОС?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Четверг, 25 Октябрь, 2007 08:48 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
info21 писал(а):
Илья Ермаков писал(а):
В новом рантайме мы вводим полный комплект средств по работе с файлами.


А они будут совместимы с МакОС?

Учитывая что МакОСХ уже давно Unix(BSD, если не ошибаюсь), то хватит поддержки Unix'овых атрибутов файлов. Тонкости -при условии что будет версия ВВ под саму МакОС - смотря под какой процессор надо - Intel x86 или IBM PowerPC. Сомневаюс ьчто будет версия под IBM.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Среда, 31 Октябрь, 2007 17:55 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Илья Ермаков писал(а):
В новом рантайме ...

А когда ожидается новый рантайм?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Понедельник, 05 Ноябрь, 2007 16:51 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вся информация по ходу проекта -
http://metasystems.ru/science.php?page= ... =7784#rep1

Прошу прощения - сайт новый, ещё не довылизан.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Вторник, 06 Ноябрь, 2007 11:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Илья Ермаков писал(а):
Вся информация по ходу проекта -
http://metasystems.ru/science.php?page= ... =7784#rep1

А у меня вопрос по
Цитата:
...и виртуальные модули. Второй механизм предлагается нами впервые...

Виртуальные модули - это как?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Вторник, 29 Январь, 2008 14:35 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Илья Ермаков писал(а):
Только WinApi. Кроссплатформенные средства, увы, не введены.
Это общая проблема ББ - либо сверхвысокий уровень абстракций (активные документы и отображения), либо WinApi. Потому что средний уровень абстракций (файлы, окна) сделан узко, в основном для поддержки верхнего уровня. Руки у швейцарцев не дошли.

В новом рантайме мы вводим полный комплект средств по работе с файлами.


А как идут дела по новому рантайму?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Вторник, 29 Январь, 2008 14:56 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Потихоньку. Тише едешь, как известно...

Что касается Active BlackBox Beta - то его исходники скоро выложим. Ядро у него стабильное, проблемы с многоядерками давно были устранены (проблемы были не в ядре, а во взаимодействии с ГУЁм). Однако поддержки и развития его (и идеи активных объектов) не будет - перспектив не видим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 19:06 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Для работы с файлом взял за основу ObxAscii.
Данный пример считывает данные с ASCII-Файла, однако не закрывает файл, пока я не выгружу этот модуль. Что нужно добавить, чтобы файл закрывался по окончании работы с ним.
Код:
MODULE TestAsciiRead;

IMPORT a := ObxAscii, Files, StdLog;

PROCEDURE Do*;
VAR
   T: a.Text;
   c: CHAR;
BEGIN
   T := a.Open (Files.dir.This("e:\"), "hello.txt");
   WHILE ~a.Eot (T) DO
      a.ReadChar (T, c);
      IF T.done THEN StdLog.Char (c) END
   END;
END Do;

END TestAsciiRead.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 20:21 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Роман М. писал(а):
Для работы с файлом взял за основу ObxAscii.
Неудачная основа для работы с файлом.

Берите прямо Files, а для типизированного чтения используйте Stores.Reader.

И там есть явная процедура Files.File.Close, которая, впрочем, автоматом и при сборе мусора вызывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Понедельник, 08 Февраль, 2010 23:34 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Отделено: viewtopic.php?f=12&t=2328


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Вторник, 09 Февраль, 2010 13:32 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Вот что у меня получилось. Однако, очень не хватает борландовского файлового типа Text для построчной обработки файла. Есть ли какой-то упрощённый интерфейс для чтения таких файлов?

Test/Mod/AsciiRead.odc
Код:
MODULE TestAsciiRead;

IMPORT Dialog, Files, Stores, Log := StdLog;

PROCEDURE Error (res: INTEGER);
(*
res = 1   invalid parameter (name or locator)
res = 2   location or file not found
res = 3   file already exists
res = 4   write-protection
res = 5   io error
res = 6   access denied
*)
VAR
   c: CHAR;
   rc, s: Dialog.String;
BEGIN
   c := CHR (48 + res); rc[0] := c; rc[1] := 0X; (* translate res into corresponding char value *)
   Dialog.MapString ("#Test:res" + rc, s); (* Get resource string *)
   Log.String ("Error: "+ s); Log.Ln
END Error;

PROCEDURE WriteCh (c: CHAR);
BEGIN
   Log.Char (c)
END WriteCh;

PROCEDURE TextRead (loc: Files.Locator; name: ARRAY OF CHAR);
VAR
   f: Files.File;
   rd: Stores.Reader;
   c: CHAR;
BEGIN
   f := Files.dir.Old (loc, name$, TRUE);
   IF f # NIL THEN
      rd.ConnectTo(f);
      WHILE ~rd.rider.eof DO
         rd.ReadChar (c);
         WriteCh (c)
      END;
      f.Close(); f := NIL
   ELSE
      IF loc.res # 0 THEN Error (loc.res) END
   END;
END TextRead;

PROCEDURE Do*;
BEGIN
   TextRead (Files.dir.This("e:/"), "hello.txt");
END Do;

END TestAsciiRead.

^Q TestAsciiRead.Do

Ресурсы (Test/Rsrc/Strings.odc):
Код:
STRINGS
res1   invalid parameter (name or locator)
res2   location or file not found
res3   file already exists
res4   write-protection
res5   io error
res6   access denied


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Вторник, 09 Февраль, 2010 13:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Откройте через Converters как TextModel - и не мучайтесь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с файлами
СообщениеДобавлено: Вторник, 09 Февраль, 2010 16:29 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Пока что я мучаюсь, пытаясь найти пример использования TextModels и Converters.
Не могу найти взаимосвязь между классами и тем как их сочетать, чтобы добиться той или иной функциональности.


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

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


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

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


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

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