Вверх ↑
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2007-07-02 17:12:43 ЛС | профиль | цитата
Вот что я обнаружил. Отсутствует считывание со стрима в компоненте Jpeg.
Смотрим код чтения стрима doLoadFromStream
procedure THIJpeg._work_doLoadFromStream;
var st:PStream;
begin
st := ReadStream(_data,_data_Stream,nil);
if st <> nil then
{$ifdef gdip}
{$else}
jpg.LoadFromStream(st);
{$endif}
end;
После чтения, st.Position указывает на конец стрима, но метод jpg.LoadFromStream не устанавливает позицию стрима в ноль, читаем а JpegObj
procedure LoadFromStream(Stream: PStream);
{* Loads JPeg image from a stream (from current position). }

те от текущей позиции, и в нашем случае получается что от конца. И пока я не сделал вот так (обнуление позиции в MemoryStream я тоже пробовал -- не помогло)
procedure THIJpeg._work_doLoadFromStream;
var st:PStream;
begin
st := ReadStream(_data,_data_Stream,nil);
st.Position := 0; // вставка
if st <> nil then
{$ifdef gdip}
{$else}
jpg.LoadFromStream(st);
{$endif}
end;
он у меня категорически отказывался читать стрим. Запись в стрим я не пробовал, но надо проверить. Я буду признателен, если специалисты докажут мне обратное.
карма: 22

0