![]() |
|
|
![]()
|
|
| ZVano |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Есть файл, содержимое которого нужно считать в переменную типа RawByteString.
Как это сделать? Мой код такой:
При выполнении ошибки не происходит, но и содержимое переменной imgRaw пустое. Может, RawByteString не может хранить данных такого размера(77 040)? В модуле <System.hpp> тип объявлен так:
-------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
ZVano,
Такая строка является объектом. Нельзя данные писать напрямую в объект. Можно писать в буфер заданного размера. Я бы воспользовался классом TStringStream . ИМХО он лучше подойдет. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| ZVano |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
1. Т.е. вместо TFileStream использовать TStringStream, затем TStringStream преобразовывать в RawByteString? 2. Или вместо RawByteString использовать TStringStream? Если 2е, то так не пойдет т.к. задача вносит ограничения. Кусок кода - заглушка, которая эмулирует загрузку блобов из курсора Oracle (результат выхова хранимой процедуры). Курсор же представлен массивом Blobs[] типа RawByteString. Блобы содержат картинки в формате JPG.
Реализацию слизал с паскалевского кода не особо задумываясь о внутреннем представлении
Это сообщение отредактировал(а) ZVano - 23.5.2011, 15:30 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Я имел ввиду использовать свойство DataString класса TStringStream , так чтобы никуда ничего не преобразовать.
Добавлено через 51 секунду А так вместо F.Read(PAnsiChar(Result)^,F.Size); сделать F.Read(&Result[1],F.Size); -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| ZVano |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Спасибо. Ваше замечание помогло решить задачу. Правда, сделал это несколько по другому.
-------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
| ZVano |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Абалдеть.... Что же делать? Использование типа "RawByteString" предопределено параметром компонента TADStoredProc. А данные полюбому превышают этот размер. Правда, покаместь прога не гавкала о попытках записи в чужую память. Загружал многократно по 20 картинок размером 70..200кб -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
ZVano, это он так шутит про твой первый код, где ты затираешь содержимое объекта. Строки в билдере могут хранить до 2х Гб информации.
Добавлено через 2 минуты и 54 секунды AnsiStringT<65535> - в угловых скобках означает номер кодовой страницы анси в которой закодирована строка. RawByteString не имеет никакой кодировки, используется просто как буфер данных. На самом деле эти кодировки вводились для корректной конвертации юникода в анси строки и обратно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| ZVano |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Alexeis, спасибо за пояснение.
-------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |