Вопрос про получение данных JPEG

Здесь обсуждаются технические аспекты создания дополнений.
z0dium
Сообщения: 3
Зарегистрирован: 00:26, 05.06.2019

Вопрос про получение данных JPEG

Сообщение z0dium » 13:39, 27.06.2019

Здравствуйте!
Подскажите, пожалуйста, как получить данные картинки отправленные личным сообщением.
Использую как основу плагин Repeater на делфи.
У меня затык происходит в следующем месте:

if (dwID = 10) then //личное сообщение или сообщение в приватный канал
begin
//Получаем данные о событии
uSenderLogin := fReadText(bInBuffer, iReadOffset);//имя отправителя
uSenderIP := fReadText(bInBuffer, iReadOffset);//IP-адрес отправителя
iSenderIcon := fReadInteger(bInBuffer, iReadOffset);//иконка отправителя
iMessageMode := fReadInteger(bInBuffer, iReadOffset);//тип сообщения
uText := fReadText(bInBuffer, iReadOffset);//текст сообщения

Не понимаю какую функцию лучше использовать для получения данных JPEG.
В Справке написано:
ID: 10
Блок данных: пользователь() + число(тип сообщения) + текст(сообщение) + данные(JPEG-изображение в случае его наличия) + число(позиция изображения относительно текста сообщения)

1. Надо ли проверять и как на наличие этих самих данных?
2. Использовать для получения данных function fReadText(bInBuffer : PAnsiChar; var iOffset : Integer): WideString; ?
3. Как бы я мог привести эти данные к файлу?

Мне нужно в итоге получить файл *.jpeg для отправки его дальше пост запросом на внешний ресурс.

Заранее спасибо, если кто-то откликнется на вопрос.

Maxim Mirgorodsky
Администратор
Сообщения: 6730
Зарегистрирован: 09:56, 27.06.2005
Благодарил (а): 1 раз

Re: Вопрос про получение данных JPEG

Сообщение Maxim Mirgorodsky » 15:04, 27.06.2019

1. Данные() состоят из размера блока данных (4 первых байта) и самих данных (последующие байты). Если размер блока данных 0 - то данных нет, т.е. нет изображения. Это относится именно к личному сообщению.
2. Нет, в данных размер блока указан в байтах, а не в символах. Можете напрямую копировать данные с помощью функции memcpy например.
3. С помощью функций fopen/fwrite/fclose например. Или TMemoryStream Write/SaveToFile. Или еще множество есть вариантов.

z0dium
Сообщения: 3
Зарегистрирован: 00:26, 05.06.2019

Re: Вопрос про получение данных JPEG

Сообщение z0dium » 17:22, 28.06.2019

Спасибо большое! Буду разбираться дальше

z0dium
Сообщения: 3
Зарегистрирован: 00:26, 05.06.2019

Re: Вопрос про получение данных JPEG

Сообщение z0dium » 03:26, 01.07.2019

Правильно ли я понимаю, что даже если не будет изображения, то после блока с текстом сообщения все равно будет блок данных, состоящий только из 4 байт и содержащий 0 как значение?

ID: 10
Блок данных: пользователь() + число(тип сообщения) + текст(сообщение) + данные(JPEG-изображение в случае его наличия) + число(позиция изображения относительно текста сообщения)

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

Ответить