|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
||||||
Чтение данных из буфера01.08.2012, 02:13. Показов 3863. Ответов 18
Метки нет (Все метки)
Помогите составить функцию чтения данных(изображения) из буфера. Имеется пример функции получения текста.
0
|
||||||
| 01.08.2012, 02:13 | |
|
Ответы с готовыми решениями:
18
Работа с буфером обмена. Чтение с буфера. TClientSocket. Чтение буфера
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 01.08.2012, 10:44 | |||
|
Вот с какой такой радости bInBuffer : PAnsiChar, если Result: WideString и при этом в теле функции не фигурируют никакие преобразования кодировки из Ansi в Unicode ?
0
|
|||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|
| 01.08.2012, 10:56 [ТС] | |
|
По части примера могу только сказать что он точно работает и используется в библиотеки которая подключается к программе в виде плагина. Изображение будет jpg.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||||||||
| 01.08.2012, 11:15 | ||||||||
0
|
||||||||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|||||||||||
| 01.08.2012, 11:40 [ТС] | |||||||||||
|
После получения данных должна использоваться функция пере конвертации. У меня есть пример на C.
0
|
|||||||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 01.08.2012, 12:07 | |||
|
Какое отношение входная Ansi-кодированная текстовая строка имеет якобы содержащемуся в ее буфере Jpeg-форматированным данным ? Как вообще в Ansi-строковый буфер попали данные совершенно иного рода ? Нет ну извратиться конечно можно, но зачем ? Почему входной буфер заявлен именно как AnsiString, а не как любого типа (или даже нетипизированный) указатель ? Добавлено через 6 минут Есть адрес первого байта буфера bInBuffer, есть смещение в буфере iOffset, по которому буфере ожидается очередной корректный блок jpeg-кодированных данных .. Т.е. все в точности так ты заявил изначально .. И чем же она при этом "явно не подходит" ?)
0
|
|||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|
| 01.08.2012, 12:22 [ТС] | |
|
Она не подходит потому что я её попытался применить. Возможно я что то упустил. Еще нужно получить величину размера данных (в байтах). Если честно я могу не очень точно информировать! Вот пост откуда я брал информацию http://commfort.com/ru/forum/v... =35&t=7799 Надеюсь на понимание!
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 01.08.2012, 12:42 | |||
|
В твоем топикстарте в примере функции получения текста, который ты пожелал заточить под получение изображения, нет ни намека на размер данных буфере. Так я тебе и заточил функцию с точно такими же заявленными тобой же условиями - размер буфера заранее неизвестен, но известна позиция в буфере, начиная с которой в нем ожидаются jpeg-кодированные данные... Какой тебе еще размер-то нужен ? Этих самых данных, которые функция прочитает из буфера за один вызов что ли ? Ну так просто вычисли разность между значениями параметра iOffset после и до вызова функции - вот и будет тебе размер очередных прочитанных из буфера jpeg-данных..
0
|
|||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
||||||
| 01.08.2012, 12:50 [ТС] | ||||||
|
Если уж из перво источника нечего непонятно то я просто не знаю. Может быть кинуть весь код плагина?
0
|
||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||||||
| 01.08.2012, 13:10 | |||||||
|
Ни одна из fRead-функций в тексте приведенного тобой плагина не возвращает размер прочитанных данных, а для fReadJpegImage он вдруг стал нужен .. Ну возьми да модифицируй ее так, если уж надо :
0
|
|||||||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
||||||
| 01.08.2012, 13:13 [ТС] | ||||||
|
Просто по инструкции "То есть после чтения текста сообщения ([image]) необходимо будет считать 4 байта - размер данных и далее сами данные JPEG изображения. Если данные в TMemoryStream, то для конвертации к TImage нужно выполнить следующее:"
0
|
||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||||||
| 01.08.2012, 13:51 | |||||||
|
Ну даже если так, то размер этот не нужен, разве что для сверки - его можно смело пропустить, скорректировав соответственно позицию в буфере: function fReadJpegImage(bInBuffer: Pointer; var iOffset: Integer): TJpegImage; type TJpegStream = class(TCustomMemoryStream) end; var JpegStream: TJpegStream; begin JpegStream := TJpegStream.Create; try JpegStream.SetPointer(bInBuffer, MAXINT); JpegStream.Position := iOffset + 4; // коррекция смещения Result := TJpegImage.Create; try Result.LoadFromStream(JpegStream); iOffset := JpegStream.Position; except Result.Free; raise; end; finally JpegStream.Free; end; end; Если в буфере после 4-х байт размера данных об jpeg-кодированном изображении действительно следует корректное (по размеру и правилам кодирования) изображение , то ф-ция вернет корректный TJpegImage-объект с прочитанной из буфера картинкой, в противном случае возбудит исключение, которое говорит о принципиальной бессмысленности последующего (т.е. после неуспешной попытки чтения изображения) чтения и интерпретации содержимого буфера. Т.е. нарушен протокол информационного обмена мехду плагином и хостом. Добавлено через 12 минут Либо, если таки задействовать префикс размера, так:
0
|
|||||||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|
| 01.08.2012, 13:59 [ТС] | |
|
Первая функция наработает и ошибка по которой она вылетает я назвать не могу. Поскольку программа просто останавливает плагин. Вторую я не могу применить из bInBuffer: PByte так как в функцию передается bInBuffer : PAnsiChar
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 01.08.2012, 14:09 | |||
|
Ну возьми да измени PByte на PAnsiChar, если уж совсем не можешь)
0
|
|||
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|
| 01.08.2012, 14:30 [ТС] | |
|
Нечего не получилось. Можно пример с TMemoryStream
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 01.08.2012, 14:41 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|
| 01.08.2012, 14:47 [ТС] | |
|
На том форме программы где за эти плагины общаются. Некто не может дать рабочий пример. Ну это и понятно что некому не нужно получать картинку это просто можно сказать ненужная функционал плагина. Поэтому некто и не пытался. А мне это нужно но походу некто помочь не может.
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 01.08.2012, 15:01 | |
|
Помощь ты получил. Вполне предметную.
А то что ты не смог или не захотел ею воспользоваться - вот это как раз и есть "походу".
0
|
|
|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
|
| 01.08.2012, 15:02 [ТС] | |
|
Да я и сам вижу что код вроде правильный! Ладно буду глумится спасибо за помощь!
0
|
|
| 01.08.2012, 15:02 | |
|
Помогаю со студенческими работами здесь
19
Чтение текстовых данных из буфера обмена Чтение данных из буфера печати (spoolsv) Как?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|