OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Как считать двоичный файл по байтам?

Open EinstokFair opened this issue 5 years ago • 11 comments

Опишите ошибку

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

EinstokFair avatar Dec 18 '18 01:12 EinstokFair

в строке 22 исправь: СчитаноБайт = Буфер.Размер; у меня работает. 1Script Execution Engine. Version 1.1.0.321

vasvl123 avatar Dec 18 '18 07:12 vasvl123

@EinstokFair оффтоп:

Посмотрел Ваши комментарии к коду и ваш профиль на гитхабе. А как вас занесло в область 1С и 1Скрипт? Вы что такое сделать хотите? :) Ежели не секрет, конечно :)

EvilBeaver avatar Dec 18 '18 08:12 EvilBeaver

в строке 22 исправь: СчитаноБайт = Буфер.Размер;

в итоге я сами байты хочу извлечь и переработать. Кроме того, ошибка, как я понял, возникает при создании ЧтениеДанных, т.е. гораздо раньше. Поправил текст, ничего не поменялось,

1.1.0.321

буду запрашивать, чтобы проапгрейдили пакет, но тегов я не вижу с такой версией, последняя 1.0.21

Вы что такое сделать хотите? :)

Я выполняю тестовое задание выданное по этой ссылке - https://www.linux.org.ru/forum/general/14665561

Смайлик ставить не буду, всё серьёзно.

EinstokFair avatar Dec 18 '18 08:12 EinstokFair

@EinstokFair прочитал задание. Там же не нужно чтение двоичных данных. На вход поступает текст, на выход - тоже текст.

dmpas avatar Dec 18 '18 11:12 dmpas

Я хочу на входе байты по 8 бит, на выходе перепакованные байты по 7 бит.

Нужно мне это для того, чтобы получить умение чтения файлов по байтам. А умение читать и писать файлы по байтам мне нужно для того, чтобы эти файлы потом обрабатывать как угодно.

Если я ограничусь только текстом, никакой свободы действий не будет.

EinstokFair avatar Dec 18 '18 11:12 EinstokFair

@EinstokFair еще актуально?

EvilBeaver avatar Jun 17 '19 09:06 EvilBeaver

не знаю, нужно перетестировать. И версия mono теперь другая, и одинскрипт надо обновлять. а задача как задача мной на одинскрипте ещё не решена, так что актуальна

EinstokFair avatar Jun 19 '19 15:06 EinstokFair

up

EvilBeaver avatar Feb 10 '20 11:02 EvilBeaver

Ничего не поменялось. В репозитории EvilBeaver/OneScript (этом репозитории) не появилось новых тегов релиза. Latest release = v1.0.21. Мейнтейнеры gentoo не написали новых пакетов (может быть они не хотят пакетить промежуточные нестабильные релизы, такие как v1.2.0, и ждут следующий стабильный ?). Поэтому я не перетестировал эту багу.

EinstokFair avatar Feb 10 '20 22:02 EinstokFair

Версия 1.3.0 - не работает

# oscript convert.os 
{Модуль /root/test/convert.os / Ошибка в строке: 8 / Внешнее исключение (System.NotImplementedException): The method or operation is not implemented.}

EinstokFair avatar May 23 '20 04:05 EinstokFair

Под Windows все выполняется норм.

arkuznetsov avatar May 26 '20 08:05 arkuznetsov