Igel, сам я не пробовал заносить WMFы программно, но что-то мне подсказывает, что при программной записи картинки как потока байт проблем возникать не должно. Если это так, то твой вывод абсолютно верен. При вставке картинки через Access в поле вставляется дополнительная информация. Самое веселое, что информация (назовем ее служебной информацией) дописывается как в начало, так и в конец данных поля. Длина блока служебной информации в начале поля непостоянна и различается для разных файлов. Поле OLE в принципе может хранить любые данные, однако при программной вставке мы пихаем туда массив байтов, а при вставке из Access - обьъект OLE. Что Access подразумевает под объектом OLE - известно только ему (ну и дяде Биллу естественно
), но это понятие явно шире, чем просто двоичное содержимое файла. Из переменной длины информационной части можно предположить, например, что туда пишется путь к файлу, на основе которого создан OLE объект, но это опять же только предположения.
По твоим вопросам:
1. Предполагается, что в поле храняться данные WMF, программа заточена под распознавание только таких файлов. Хвост никак не влияет на отображение картинки. Можно в принципе покопаться в формате объекта OLE в понимании Access и вычленить также и "эпилог", но уже на откуп постановщику задачи
Повторюсь, если нужно только отображать картинки, то на хвост можно забить.
2. Про константы:
buff_size = 1024 - ну нравяться мне степени двойки, как и любому программисту
65536 вроде многовато, 256 показалось мало, для данного примера конечно бы сработало (данные WMF начинаются на 153-м, кажется, по счету байте). В принципе возможна такая ситуация, что размер заголовка больше размера буфера, и это обязательно нужно предусмотреть в рабочем варианте. Если не получится, могу подсказать как
seed_size = 4 - размер заголовка файла WMF, по которому можно идентифицировать начало данных картинки. Естественно заголовок WMF по размеры явно больше 4 байт, но в данной задаче для идентификации нужных данных 4 байт вполне достаточно.
seed :array [0..3] of byte = ($d7,$cd,$c6,$9a) - тут ты сам все сказал