powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus + fcl-web
14 сообщений из 14, страница 1 из 1
Lazarus + fcl-web
    #39921074
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользуюсь https://wiki.freepascal.org/fcl-web.

В целом все заработало как задумано. Но есть проблема которую я пока не представляю как решить.

Во время обработки Get запроса делаю по доке:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
AResponse.ContentStream := TMemoryStream.Create;
try
  AResponse.ContentStream.LoadFromFile('/tmp/sample.tiff'); // тут другое, но не суть.
  AResponse.ContentType := 'image/tiff'; //or whatever MIME type you want to send
// to do: there is an fpweb example that gets the mime type from the file extension...
  AResponse.ContentLength:=AResponse.ContentStream.Size; //apparently doesn't happen automatically?
  AResponse.SendContent;
finally
  AResponse.ContentStream.Free;
end;

Режим селф-хоста.

В обычной ситуации все работает нормально, но стоит удаленному браузеру разорвать соединение во время обработки его сервером как во время AResponse.SendContent ПО валится с ошибкой "Stream write error".
И это пол беды. Основная проблема в том что дальше приложение падает даже если обернуть все в try except.
Это вымораживает.

Не падает только если не делать AResponse.ContentStream.Free, что явно не вариант.

Что делать?
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921076
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Падает так:
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921094
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Не падает только если не делать AResponse.ContentStream.Free, что явно не вариант.
Уверен? Судя по стилю кода AResponse.ContentStream.Free может вызываться автоматически где-то внутри.

Ну и вот так попробуй
Код: pascal
1.
2.
AResponse.ContentStream.Free;
AResponse.ContentStream := nil;



А вообще уничтожение поля внешнего объекта, даже если ты его сам присвоил, сильно настораживает
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921114
Сергей Фролов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем ты вообще этот fcl-web взял?
Есть прекрасный Delphi MVCFramework от итальянца Тети. Там куча возможностей.
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921163
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Ну и вот так попробуй
Код: pascal
1.
2.
AResponse.ContentStream.Free;
AResponse.ContentStream := nil;

Помогло. Спасибо!

А вообще уничтожение поля внешнего объекта, даже если ты его сам присвоил, сильно настораживает
Так написано в доке к fcl-web!
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921164
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Фролов
А зачем ты вообще этот fcl-web взял?
Есть прекрасный Delphi MVCFramework от итальянца Тети. Там куча возможностей.

Гугль. Вики лазаря.
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921166
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не стоит ли перед этой строкой
AResponse.ContentStream.Free;

проверить на существование AResponse?
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921173
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

В отладчике - есть.
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921191
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

У респонза есть свойство FreeContentStream : Boolean; Может стоит использовать его?
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921335
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
А вообще уничтожение поля внешнего объекта, даже если ты его сам присвоил, сильно настораживает
Так написано в доке к fcl-web!Доку тоже люди пишут. Исходники наше все
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39921363
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Мегабайты исходников просмотреть замучаешься.
А как в лазаре отлаживать сорцы его пакетов мне пока не известно.
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39922028
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
rgreat,

У респонза есть свойство FreeContentStream : Boolean; Может стоит использовать его?
Спасибо, это более красивое решение.
Непонятно почему его в доке не использовали.
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39922034
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Спасибо, это более красивое решение.
По идее твой исходный вариант будет работать, если установить
Код: pascal
1.
FreeContentStream := False;
...
Рейтинг: 0 / 0
Lazarus + fcl-web
    #39922038
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
rgreat
Спасибо, это более красивое решение.
По идее твой исходный вариант будет работать, если установить
Код: pascal
1.
FreeContentStream := False;

Он по умолчанию false.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus + fcl-web
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]