Тема: jpeg error #42
Показать сообщение отдельно
  #1  
Старый 25.04.2015, 05:03
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию jpeg error #42

Компонент отрисовывае на канве JPEGImage - загружается из потока в конструкторе и отрисовывается на канве
Код:
type
    TTumbnale = class(TGraphicControl)
     ----------------------
    protected
     Img: TJPEGImage;
    public
     constructor Create(AOwner:TComponent; AName:TComponentName;
      ImgStream:TMemoryStream);reintroduce;
     procedure Paint;override;
    end;

implementation

constructor TTumbnale.Create(AOwner:TComponent;  ImgStream:TMemoryStream);
begin
 inherited Create(AOwner);
 Parent:= AOwner as TWinControl;
 Img:= TJPEGImage.Create;
 Img.LoadFromStream(ImgStream);
end;

procedure TTumbnale.Paint;
begin
 inherited Paint;
 Canvas.StretchDraw(Rect(2,2,242,182),Img);
end;
Загружаю картинку в поток - IdHTTP.Get, получаю "jpeg error #42"
Код:
procedure TForm1.Button2Click(Sender: TObject);
var t: TTumbnale;  s: TMemoryStream;  h: TIdHTTP;
begin
  s:= TMemoryStream.Create;
  h:= TIdHTTP.Create(Self); 
  h.HandleRedirects:= True;
  h.Get('http://fobr.ru/wp-content/uploads/2013/11/zapr_0.jpg', s);
  t:= TTumbnale.Create(ScrollBox1, 'tumb1',  s); //здесь ошибка 42
  s.Free;  h.Free;
end;
проверяю - файл сохраняется
Код:
begin
  s:= TMemoryStream.Create;
  h:= TIdHTTP.Create(Self); 
  h.HandleRedirects:= True;
  h.Get('http://fobr.ru/wp-content/uploads/2013/11/zapr_0.jpg',s);
  s.SaveToFile('Temp\zapr_0.jpg'); //Файл сохраняется
  s.Free;  h.Free;
end;
Загружаю картинку в поток из файла все отрисовывается
Код:
begin
  s:= TMemoryStream.Create;
  s.LoadFromFile('Temp\zapr_0.jpg');
  t:= TTumbnale.Create(ScrollBox1,'tumb1', s); //здесь все прекрасно срабатывает
  s.Free;
end;
делать через сохранение файла - вообще не кошерно
и что это за ошибка #42?
Ответить с цитированием