Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

the image format is unknown

Все о том как сделать что-то с помощью скриптов.
jurist23rus
Эксперт
Сообщения: 2624
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 10 раз

the image format is unknown

Сообщение jurist23rus » Сб мар 02, 2019 2:54 pm

Как побороть?

screen2.png
screen2.png (3.15 КБ) 474 просмотра


IMAGE.ZIP
(44.33 КБ) 22 скачивания
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1583
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 8 раз

Re: the image format is unknown

Сообщение Гocть » Сб мар 02, 2019 6:34 pm

Код: Выделить всё

procedure LoadAndShowImage (Sender: TObject);
var
  http: THttpClient;
  url: string;
begin
 // url := 'http://dataexpress.wiki/_media/wiki:logo.png';
 url := 'https://ruseller.com/lessons/les160/rotate_image/rotate.php';
  http := THttpClient.Create;
  try
    with http do
    begin
      ContentStream := TmemoryStream.Create;
      Send ('GET', url);
if Assigned (ContentStream) then
begin
ContentStream.Position:=0;
dxImage1.LoadFromStream(ContentStream);
dxImage1.Refresh;
end;
    end;
  finally
   http.Free;
  end;
end;


Зачем?:

Код: Выделить всё

if Assigned(Http.ContentStream) then
Http.ContentStream.Free;

если следом идет:

Код: Выделить всё

http.Free;
Фрилансер. Разработка на заказ. Консультирование.

jurist23rus
Эксперт
Сообщения: 2624
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Re: the image format is unknown

Сообщение jurist23rus » Сб мар 02, 2019 6:47 pm

Откуда же я знаю уничтожается ли ContentStream или нет, вот и престраховываюсь.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1583
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 8 раз

Re: the image format is unknown

Сообщение Гocть » Сб мар 02, 2019 6:51 pm

jurist23rus писал(а):Откуда же я знаю уничтожается ли ContentStream или нет, вот и престраховываюсь.

Так можно же и автора спросить. У него вроде были исходники ;)

На крайний случай:
1. Смотрите диспетчер задач.
2. Находите в интернете картинку весом в 5-10 мб.
3. Многократно загружаете без уничтожения ContentStream.
4. Смотрите диспетчер задач.
Фрилансер. Разработка на заказ. Консультирование.

jurist23rus
Эксперт
Сообщения: 2624
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Re: the image format is unknown

Сообщение jurist23rus » Сб мар 02, 2019 6:58 pm

Я до конца не понимаю реализацию этого класса. Почему ContentStream не создаётся автоматически при создании экземпляра класса? Зачем это отдавать на откуп пользователю? Отсюда и непонимание нужно ли его уничтожать.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Re: the image format is unknown

Сообщение admin » Сб мар 02, 2019 7:53 pm

ContentStream не уничтожается автоматически. Почему не создается автоматически? А какой создавать: TMemoryStream, TStringStream, TFileStream? Пусть лучше об этом думает разработчик, исходя из задачи.
jurist23rus писал(а):Как побороть?
ContentStream.Position в 0 поставьте.

jurist23rus
Эксперт
Сообщения: 2624
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Re: the image format is unknown

Сообщение jurist23rus » Сб мар 02, 2019 8:47 pm

admin писал(а):А какой создавать: TMemoryStream, TStringStream, TFileStream?

Думаю общего для всех предка TStream. А остальное, действительно дело разработчика, если ему нужен потомок, то пусть сам его объявляет и создаёт.

Вы не подумайте, что я критикую вашу реализацию, она вполне удачная, просто мне всегда казалось, что класс должен сам управлять своими объектами, а пользователь своими, иначе, когда я сам создаю объект в чужом классе возникает путаница с тем кто же его уничтожит. Хотя я понимаю общее правило - сам создал объект, сам заботься о его уничтожении, что я, вообщем, всегда и делал.
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Re: the image format is unknown

Сообщение admin » Сб мар 02, 2019 9:06 pm

Создавать TStream нет смысла, он абстрактный. ContentStream создавать необязательно, используйте свойство Content.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1583
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 8 раз

Re: the image format is unknown

Сообщение Гocть » Сб мар 02, 2019 9:42 pm

admin писал(а):ContentStream создавать необязательно, используйте свойство Content

Разве в конкретном примере это применимо? (Загрузка изображения в память и выдача из памяти в TdxImage)
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
admin
Разработчик
Сообщения: 4516
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 19 раз
Поблагодарили: 73 раза

Re: the image format is unknown

Сообщение admin » Вс мар 03, 2019 5:04 pm

Гocть писал(а):
admin писал(а):ContentStream создавать необязательно, используйте свойство Content

Разве в конкретном примере это применимо? (Загрузка изображения в память и выдача из памяти в TdxImage)

Это так к слову. Вообще можно и через Content, создав TStringStream, но смысла нет особого.