Есть двоичный файл.
Читаем его через
В нём есть кусок, который представляет zero-terminated string, то есть набор символов до первого Символ(0) (ну, как строки в С).
Пытаюсь читать
Поимеваю ошибку "неверный параметр 2".
Можно ли как-то одним махом прочитать весь кусок, а не циклом, проверяя очередной символ на 0?
ЗЫ. 1с 8.3.10
Читаем его через
ПотокИсходный = ФайловыеПотоки.ОткрытьДляЧтения(ИмяФайла);
ЧтениеДанных = Новый ЧтениеДанных(ПотокИсходный);
В нём есть кусок, который представляет zero-terminated string, то есть набор символов до первого Символ(0) (ну, как строки в С).
Пытаюсь читать
стр = ЧтениеДанных.ПрочитатьСтроку(КодировкаТекста.OEM, Строка(Символ(0)));
Поимеваю ошибку "неверный параметр 2".
Можно ли как-то одним махом прочитать весь кусок, а не циклом, проверяя очередной символ на 0?
ЗЫ. 1с 8.3.10
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) можно попробовать вариант: ЧтениеДанных.ПрочитатьДо(Маркеры)
Маркеры = Новый Массив();
Маркеры.Добавить(Строка(Символ(0)));
РезультатЧтенияЧасть = ЧтениеДанных.ПрочитатьДо(Маркеры);
Если Не РезультатЧтенияЧасть.МаркерНайден Тогда
Возврат;
КонецЕсли;
ЧтениеЧасти = Новый ЧтениеДанных(РезультатЧтенияЧасть.ОткрытьПотокДляЧтения());
Показать
(2)
Да, так работает, но не совсем...
Однострочный текст читает хорошо, а вот многострочный (с переносами) - не хочет.
Если же читать как двоичные данные - опяь сведётся к посимвольному чтению...
Маркеры = Новый Массив();
Маркеры.Добавить(Строка(Символ(0)));
РезультатЧтенияЧасть = ЧтениеДанных.ПрочитатьДо(Маркеры);
Маркеры.Добавить(Строка(Символ(0)));
РезультатЧтенияЧасть = ЧтениеДанных.ПрочитатьДо(Маркеры);
Да, так работает, но не совсем...
Функция ПрочитатьСтроку(ЧтениеДанных)
Маркеры = Новый Массив();
Маркеры.Добавить(Строка(Символ(0)));
РезультатЧтенияЧасть = ЧтениеДанных.ПрочитатьДо(Маркеры);
Если НЕ РезультатЧтенияЧасть.МаркерНайден Тогда
Возврат "";
КонецЕсли;
ЧтениеСтрока = Новый ЧтениеДанных(РезультатЧтенияЧасть.ОткрытьПотокДляЧтения(), КодировкаТекста.OEM);
Возврат ЧтениеСтрока.ПрочитатьСтроку();
КонецФункции
ПоказатьОднострочный текст читает хорошо, а вот многострочный (с переносами) - не хочет.
Если же читать как двоичные данные - опяь сведётся к посимвольному чтению...
(6)
Не катит.
Может все же: Возврат ЧтениеСтрока.Прочитать();
ЧтениеДанных (DataReader)
Прочитать (Read)
Синтаксис:
Прочитать(<Количество>)
Параметры:
<Количество> (необязательный)
Тип: Число.
Количество байтов, которые требуется прочитать. Если не задано, то выполняется чтение всех данных до конца потока.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: РезультатЧтенияДанных.
ПоказатьПрочитать (Read)
Синтаксис:
Прочитать(<Количество>)
Параметры:
<Количество> (необязательный)
Тип: Число.
Количество байтов, которые требуется прочитать. Если не задано, то выполняется чтение всех данных до конца потока.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: РезультатЧтенияДанных.
Не катит.
(7)
Мы тут знаем (по построению и спецификации формата), что там многострочная строка в кодировке 866. Причём почти (за исключением нескольких символов (Символ(1)) в начале строки) вся - человекочитаемая, для чего, собственно, и предназначена.
А тут Если знаем, что там двоичные данные, то совсем просто:
Мы тут знаем (по построению и спецификации формата), что там многострочная строка в кодировке 866. Причём почти (за исключением нескольких символов (Символ(1)) в начале строки) вся - человекочитаемая, для чего, собственно, и предназначена.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот