Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Двоичные данные: мапинг файла и структур как в С++          
DiakonX Подменю пользователя
сообщение 04.08.21, 19:41
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Подскажите, есть ли в 1с аналог мапинга файла и структур как в С++ например.
Т.е. у меня есть двоичный файл структуру, которого я знаю, например:
struct{
a : byte;
b: dword;
c: byte;
} structfile

Можно как-то загрузить файл в память, считывать данные определенным размером и работать с ними как со структурой? И можно ли создать структуру, в которой элементы разного размера?

Спасибо.

Сообщение отредактировал Vofka - 05.08.21, 6:47

Vofka Подменю пользователя
сообщение 05.08.21, 6:47
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

[необходимо зарегистрироваться для просмотра ссылки] есть пример чтения файла. Но смаппить его в структуру вам придется вручную: читать побайтно и заполнять свою структуру.

DiakonX Подменю пользователя
сообщение 07.08.21, 10:09
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо. В предложенном примере допущена ошибка конечно (в загружаемом варианте, т.к. он отличается от выложенного в тексте). Там ведется работа с типом данных РезультатЧтенияДанных, а должен вестись с БуферДвоичныхДанных. Пропущена одна операция. Но в принципе это не важно, просто к тому, что скачиваемый пример нерабочий, хоть и легко правится.

Но возник второй вопрос. В свойствах двоичного буфера я нашел только
ПрочитатьЦелое16 (ReadInt16)
ПрочитатьЦелое32 (ReadInt32)
ПрочитатьЦелое64 (ReadInt64)

Есть ли возможность читать float? Или прочитать 4 байта и как-то преобразовать в float?

Vofka Подменю пользователя
сообщение 09.08.21, 8:22
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

DiakonX @ 07.08.21, 11:09 * ,
я могу ошибаться, но на сколько я понимаю суть происходящего, когда читаешь по байтам, то читаешь только целые числа. Если у вас там записано float, то записано оно все равно будет набором целых чисел. И вам должно быть известно, наверное, что из этого набора цифра до точки, что после.

DiakonX Подменю пользователя
сообщение 10.08.21, 7:17
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 8
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ Сегодня, 9:22 * ,
Все немного сложнее. Есть стандарт для float IEEE754.
Вот немного текста по данной теме [необходимо зарегистрироваться для просмотра ссылки]
Потребуются побитовые операции. Не хотелось так усложняться. Но если стандартных методов 1С не предлагает, то наверное придется.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 15:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!