OneScript
OneScript copied to clipboard
Как считать двоичный файл по байтам?
Опишите ошибку
user@localhost ~/test $ oscript convert.os
{Модуль /home/user/test/convert.os / Ошибка в строке: 8 / Внешнее исключение (System.NotImplementedException): The method or operation is not implemented.}
user@localhost ~/test $ cat convert.os
// как комментировать код:
// http://capitally.ru/1c-development/izuchenie-1s/language-1c/kommentirovanie-koda-1s/
// как работать с файлами:
// http://v8.1c.ru/o7/201602bin/index.htm
ПотокИсходный = ФайловыеПотоки.ОткрытьДляЧтения("/home/user/test/convert.os");
ЧтениеДанных = Новый ЧтениеДанных(ПотокИсходный);
// Как делать циклы
// https://helpme1c.ru/cikly-v-yazyke-1s-8-v-primerax
ВсегоСчитано = 0;
// булево - https://www.forum.mista.ru/topic.php?id=373909
ПораВыходить = Ложь;
Пока НЕ ПораВыходить Цикл
Буфер = ЧтениеДанных.ПрочитатьВБуферДвоичныхДанных(4096);
// как определить рамер массива
// http://1cguide.ru/programmirovanie-1s/opredelit-kolichestvo-elementov-massiva-1s.html
СчитаноБайт = Буфер.Количество();
// Синтаксис условного оператора
// https://helpme1c.ru/uslovnyj-operator-esli-v-yazyke-1s-8-v-primerax
Если СчитаноБайт = 0 Тогда
ПораВыходить = Истина;
КонецЕсли;
ВсегоСчитано = ВсегоСчитано + СчитаноБайт;
КонецЦикла;
Сообщить(ВсегоСчитано);
Воспроизведение ошибки oscript convert.os
Ожидаемое поведение Программа должна выводить количество считанных байт.
Окружение Mono 5.16.0.220, Linux 4.18.0, Portage 2.3.40-r1 1Script Execution Engine. Version 1.0.19.0
в строке 22 исправь: СчитаноБайт = Буфер.Размер; у меня работает. 1Script Execution Engine. Version 1.1.0.321
@EinstokFair оффтоп:
Посмотрел Ваши комментарии к коду и ваш профиль на гитхабе. А как вас занесло в область 1С и 1Скрипт? Вы что такое сделать хотите? :) Ежели не секрет, конечно :)
в строке 22 исправь: СчитаноБайт = Буфер.Размер;
в итоге я сами байты хочу извлечь и переработать. Кроме того, ошибка, как я понял, возникает при создании ЧтениеДанных, т.е. гораздо раньше. Поправил текст, ничего не поменялось,
1.1.0.321
буду запрашивать, чтобы проапгрейдили пакет, но тегов я не вижу с такой версией, последняя 1.0.21
Вы что такое сделать хотите? :)
Я выполняю тестовое задание выданное по этой ссылке - https://www.linux.org.ru/forum/general/14665561
Смайлик ставить не буду, всё серьёзно.
@EinstokFair прочитал задание. Там же не нужно чтение двоичных данных. На вход поступает текст, на выход - тоже текст.
Я хочу на входе байты по 8 бит, на выходе перепакованные байты по 7 бит.
Нужно мне это для того, чтобы получить умение чтения файлов по байтам. А умение читать и писать файлы по байтам мне нужно для того, чтобы эти файлы потом обрабатывать как угодно.
Если я ограничусь только текстом, никакой свободы действий не будет.
@EinstokFair еще актуально?
не знаю, нужно перетестировать. И версия mono теперь другая, и одинскрипт надо обновлять. а задача как задача мной на одинскрипте ещё не решена, так что актуальна
up
Ничего не поменялось. В репозитории EvilBeaver/OneScript (этом репозитории) не появилось новых тегов релиза. Latest release = v1.0.21. Мейнтейнеры gentoo не написали новых пакетов (может быть они не хотят пакетить промежуточные нестабильные релизы, такие как v1.2.0, и ждут следующий стабильный ?). Поэтому я не перетестировал эту багу.
Версия 1.3.0 - не работает
# oscript convert.os
{Модуль /root/test/convert.os / Ошибка в строке: 8 / Внешнее исключение (System.NotImplementedException): The method or operation is not implemented.}
Под Windows все выполняется норм.