Einzelnen Beitrag anzeigen

DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#3

Re: Indy TIdHTTPServer OnGet: Aufruf von Funktionen mit Para

  Alt 29. Jun 2005, 20:55
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
  Mit Zitat antworten Zitat