Компонента разработана по технологии создания внешних компонент COM в среде Lazarus. Тестировалась на платформе 1С релиза 7.70.027.
Функциональность компоненты разработана по аналогии с разделом 1С 8.3 "Работа с двоичными данными". Работа с данными ведется с помощью объектов "Файловый поток" (Addin.FileStream) как с постоянными так и с временными файлами. С помощью методов объекта можно достаточно подробно анализировать содержимое бинарных файлов, например осуществлять поиск каких-либо подстрок или байтовых комбинаций или считывать числовые значения параметров, расположенных в фиксированных местах файла.
В демонстрационном примере анализируется файл картинки BMP. Для наглядности каждый пиксель выводится в отдельную ячейку таблицы 1С, для этого анализируются составляющие R, G, B цвета каждого пикселя и с их помощью формируется цвет фона ячейки.
Процедура Сформировать()
Об = СоздатьОбъект("Addin.FileStream");
Об.Открыть("D:\tmp\Земля4.bmp");
Стр = Об.ПрочитатьСтр(2);
Если (Стр<>"BM") Тогда
Сообщить("Некорректный формат BMP файла.");
Возврат;
КонецЕсли;
Об.Перейти(18);
Ширина = Об.ПрочитатьЦелое32();
Об.Перейти(22);
Высота = Об.ПрочитатьЦелое32();
Об.Перейти(28);
Цвета = Об.ПрочитатьЦелое16();
Стр = "Размер: "+Ширина+" х "+Высота+" пикс."
+ РазделительСтрок + "Цвета: " + Цвета +" бит/пиксел";
Форма.ФайлИнфо.Заголовок(Стр);
Если (Цвета<>24) Тогда
Сообщить("Выберите BMP файл с цветом 24 бит/пиксел.");
Возврат;
КонецЕсли;
СтрокаБайт = Ширина*3;
Строка4байт = Цел(СтрокаБайт/4)*4;
Если СтрокаБайт>Строка4байт Тогда
Строка4байт = Строка4байт + 4;
КонецЕсли;
ТаблБайт = 100 * 3;
ШиринаТабл = Мин(100, Ширина);
ВысотаТабл = Мин(100, Высота);
ПропускБайт = Строка4байт - ШиринаТабл*3;
Таблица.Вывести();
Тс= ВысотаТабл;
Об.Перейти(54);
Пока Тс>0 Цикл
Для Тк=1 по ШиринаТабл Цикл
B = Об.ПрочитатьБайт();
G = Об.ПрочитатьБайт();
R = Об.ПрочитатьБайт();
Таблица.Область(Тс,Тк).ЦветФона(R,G,B);
КонецЦикла;
Тс = Тс-1;
Об.Перейти(ПропускБайт,1);
КонецЦикла;
Таблица.Показать();
КонецПроцедуры
---