Hallo Daniel,
danke für Deine Antwort.
Das Problem ist, dass der HTTPServer und das Memo auf einem Formular liegen. Diese Variablen würden ja ebenfalls zu dem Formular gehören und wären wiederum nicht Thread-sicher. Ich erzeuge ja nicht explizit einen eigenen Thread, sondern TidHTTPServer tut es, um OnCommandGet aufzurufen. Damit wären diese variablen wohl nicht "sicher". Es könnte ja passieren, dass ein zweiter Thread die Variable bereits geändert hat, bevor Synchronize aufgerufen wird, oder?
Ich habe gerade mal folgendes ausprobiert, was zu funktionieren scheint:
in dem OnCommandGet-Event:
Delphi-Quellcode:
procedure TMainForm.HTTPS2CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var TestForm: TTestForm;
begin
Application.CreateForm(TTestForm,TestForm);
AResponseInfo.ContentText := TestForm.LoadFromFile('test.html');
try TestForm.Free; except end;
end;
TTestForm hat dann die Funktion
Delphi-Quellcode:
function TTestForm.LoadFromFile(FileName: string) : string;
begin
LoadMemo.Clear;
LoadMemo.Lines.LoadFromFile(FileName);
result := LoadMemo.Text;
end;
Hier scheint es keine Probleme zu geben. Oder birgt diese Lösung Gefahren, die ich an dieser Stelle übersehe?
MfG
..DocE