Перейти к содержанию
Fire Monkey от А до Я
  • 0

Bitmap из MemoryStream


Rusland

Вопрос

Перекодирую картнику из текста в MemoryStream

uses   Soap.EncdDecd;                          // DecodeStream

function TFrmMain.GetImgFromTxt(sPic:String):TMemoryStream;
var
  xInSs: TStringStream;
  xOutMs:TMemoryStream;
begin
  if (sPic<>'') then
  begin
    xInSs:=TStringStream.Create(sPic);  //jpg в baze64 из txt
    xOutMs:=TMemoryStream.Create;
    DecodeStream(xInSs,xOutMs);
    XOutMs.Position:=0;
    Result:=XOutMs;
    xInSs.Free;
    xOutMs.Free;
  end;
end;

Затем присваиваю

  if (Pict1<>'') then
  begin
    Image1.Bitmap.LoadFromStream(GetImgFromTxt(Pict1));
    Image1.Visible:=true;
  end
  else
  begin    
    Image1.Visible:=false;
  end;

Так вот в LoadFromStream приходит nil.

Если я комментирую // xOutMs.Free; то картинка нормально отображается.

Почему такое происходит? Как тогда правильно очищать переменную xOutMs?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

 

4 минуты назад, Rusland сказал:

Result:=XOutMs; ---> xOutMs.Free;

мы возвращаем вызывающей процедуре ссылку на уже разрушенный объект ???

Ссылка на комментарий
  • 0
  • Модераторы
4 минуты назад, Rusland сказал:

Мне думается что я копирую объект, а не передаю ссылку. Разве нет?

копируются данные через Assign или CopyFrom

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...