Этот вопрос задавался очень часто, и я часами читал, пробовал, тестировал безрезультатно.
Полагаю, это связано с моей более старой версией 2005 года.
Нижеэто код, который я попробовал после прочтения сообщения на форуме Embarcadero, на который ответил Реми Лебо:
Тема: Как обрабатывать несколько сеансов HTTP с Indy10 TIdHTTPServer
procedure TMainForm.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Msg : String;
begin
if ARequestInfo.QueryParams <> '' then
begin
Msg := DateTimeToStr(Now) + ': ReqParam "' + ARequestInfo.QueryParams + '"';
TThread.Queue(nil,
procedure
begin
Memo1.Lines.Add(Msg);
end
);
AResponseInfo.ContentText := '<HTML><BODY>Query Params found.</BODY></HTML>';
end
else
begin
AResponseInfo.ContentText := '<HTML><BODY>Error: No Query Params.</BODY></HTML>';
Msg := DateTimeToStr(Now) + ': Error: No Query Params';
TThread.Queue(nil,
procedure
begin
Memo1.Lines.Add(Msg);
end
);
end;
end;
То, к чему я стремлюсь, - это доступ к заметке или записи в файле журнала потокобезопасным способом. Каким-то образом использование TThread.Synchronize()
или TThread.Queue()
не компилируется.
При добавлении строки TThread.Queue()
в соответствии с предложением Реми я получаю ошибку:
E2029 Выражение ожидается, но процедура найдена
У кого-нибудь есть альтернатива, которую я могу использовать в Delphi 2005?
Редактировать: это то, что я вижу из дополнения кода: