Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 29 мар 2024, 10:38

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




Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 27 сен 2018, 13:17 
Не в сети

Сообщения: 350
Спасибо, теперь уже знаю. Но вопрос о мистической 8-ке всё ещё стоит у нас на пути.
> Я, также, не знаю о каких файлах идёт речь, но слышал, что ради удобства с памятью часто работают через файловую абстракцию.
Дай-то Бог. Хотя для устройств с ограниченным размером памяти и физический файл может иметь смысл.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 27 сен 2018, 15:14 
Не в сети

Сообщения: 146
Вообще, для экспорта в другие форматы надо смотреть в сторону Converters. Есть пример ObxConv.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 27 сен 2018, 15:37 
Не в сети

Сообщения: 350
Мы с Иваном проработали тему. Рабочая версия - будем делать версию обычного сохранения, в текстовом формате (вместо двоичного). Это проще, чем конвертеры, т.к. нет задачи подстроиться под инородный формат. Задача просто выгрузить текст - как текст, число - как число, так, чтобы сторонняя программа понимала смысл. Например, так:
Код: "OBERON"
  1.  
  2. №юD0B4
  3. «Строчка»
  4. @CCFFCCFFDDEE0044
  5.  

Здесь содержатся 32-разрядное число, строка и 64-разрядное число.

Такой формат полностью эквивалентен файлу odc по содержимому, но при этом ещё и человеко-читаем и может использоваться для обработки diff-ом, git-ом и пр. Это решение пока ещё не совершенно (для эффективной интеграции с системой контроля версий может понадобиться разбить файл ещё на несколько), но может быть неким шагом вперёд в направлении подружить BlackBoxComponentBuilder и git.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 27 сен 2018, 15:39 
Не в сети

Сообщения: 350
Но возможно, что в ObxConv можно найти ключ к магической восьмёрке, поскольку rtf и html сохраняют документы с нормальными кодами юникода - значит, они умеют открыть восьмёрку.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 27 сен 2018, 15:41 
Не в сети

Сообщения: 350
Возможно, в ближайшем будущем добавим отображение вложенности сохраняемых объектов друг в друга. Например, если стиль находится внутри текстовой модели, то мы скобочками и/или отступами как-то изобразим эту вложенность. Но это будет ясно после того, как будет готова первая версия.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 29 сен 2018, 17:47 
Не в сети

Сообщения: 350
Псевдо-ТЗ на сохранение документов в тексте, версия 2.

Исходим из следующих предположений:
- каждый процесс записи обслуживается одним Writer-ом
- существует одно место, где этот Writer создаётся при выполнении конкретного сохранения документа
- в месте создания Writer-а известно, в какой формат мы будем сохранять.

Наша цель: получить, прежде всего, обратимый текстовый формат. Полная поддержка РЯ является второй целью, но поддержка кодировки Utf-8 для РЯ во всех компонентах, написанных сторонними разработчиками, не является на данный момент обязательной. Достаточна поддержка в документации и исходных текстах документов.

Как предполагается сделать:
- Во Writer, используемый для сохранения документа, добавляется публично доступное поле типа да-нет с рабочим названием "сохраняем-формат-aaa", далее СФА
- Если сохраняем в формат aaa, то поле СФА устанавливается в истину.
- Функция WriteBytes смотрит поле, и если СФА, то пишет байты в виде Байт AB, где AB - 16-ричный код байта. Если не СФА, то всё происходит как раньше (пишутся байты в двоичном формате).
- Функция WriteCharacters запоминает значение поля СФА и, если оно истина, то переставляет его временно в "ложь". Тогда вызов СФА внутри WriteCharacters запишет Utf-8 (но его надо починить для этого). Перед выходом из WriteCharacters значение СФА восстанавливается.

Как проверить?
- сохранить разные документы в aaa и потом восстановить. Файлы aaa не должны содержать двоичных "крокозябл", а тексты из тела документов должны быть в utf-8.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 01 окт 2018, 15:17 
Не в сети

Сообщения: 28
Comdiv писал(а):
На всякий случай спрошу, Вы знаете, что ББ работает с UTF-16? Правда, "д" и "е" в LE кодируется как 3404 3504 https://www.unicode.org/charts/PDF/U0400.pdf , так что не знаю, откуда берётся 8.


Там не совсем UTF-16.
Код: "OBERON"
  1. PROCEDURE (wr: StdWriter) WriteChar (ch: CHAR);
  2. fw.WriteByte(SHORT(SHORT(ORD(ch))));
  3. fw.WriteByte(SHORT(SHORT(ORD(ch) DIV 256 - 128)));
  4.  
  5. PROCEDURE (rd: StdReader) Read;
  6. rd.char := CHR(lc[ 0] MOD 256 + 256 * (lc[1] + 128));
  7.  


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 01 окт 2018, 16:06 
Не в сети

Сообщения: 350
Спасибо. Мы находимся сейчас на этапе отладки прямого преобразования (иногда получаются не-буквы, хотя вроде всё должно быть ок).


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 01 окт 2018, 23:07 
Не в сети

Сообщения: 146
trurl писал(а):
Там не совсем UTF-16.
Я имел ввиду представление CHAR. Как именно оно сериализуется, я, естественно, не знал.

trurl писал(а):
Код: "OBERON"
  1. PROCEDURE (wr: StdWriter) WriteChar (ch: CHAR);
  2. fw.WriteByte(SHORT(SHORT(ORD(ch))));
  3. fw.WriteByte(SHORT(SHORT(ORD(ch) DIV 256 - 128)));
  4.  
Это плохой способ записи, так как он опирается на неопределённое поведение


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 02 окт 2018, 00:02 
Не в сети

Сообщения: 350
Ответил по вашей ссылке.


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

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


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club