|
2 / 2 / 0
Регистрация: 28.01.2012
Сообщений: 99
|
||||||
Чтение данных из буфера01.08.2012, 02:13. Показов 3899. Ответов 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) Как?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|