Hi Leute,
ich habe einen Thread indem ich eine Anfrage an einen Server(http-Request) schicke.
Delphi-Quellcode:
procedure TInteractiveThread.DoRequest;
Var sReq : String;
sReply : String;
iTries : Longint;
begin
sReq := MakeRequestString(cActionStr[fAction],fP1,fP2,fP3);
iTries := 1;
Repeat
LogMsg := sReq;
Synchronize(LogNow);
try
sReply := HttpCon.Get(sReq);
except
sReply := '';
end;
LogMsg := 'Serverantwort:"'+sReply+'"';
Synchronize(LogNow);
until (CheckReply(sReply)) or (iTries > MaxRetries);
sResult := sReply;
iResult := getThreadResult(sReply);
end;
procedure TInteractiveThread.Execute;
begin
if not Terminated then
DoRequest;
// Speicher freigeben
HttpCon.Disconnect;
HttpCon.free;
ReturnValue := iResult;
end;
In meiner Hauptapplikation frage ich den Thread folgendermaßen ab :
Delphi-Quellcode:
Var activeThd : TInteractiveThread;
strL : TStringList;
sTmp : String;
begin
result := false;
if Contact <> Nil then begin
activeThd := TInteractiveThread.Create(cUser_Details,ID,PWD,LogF,inttostr(Contact.Nr));
try
// Thread starten
activeThd.Resume;
// auf Ende des Threads warten
activeThd.WaitFor;
// Thread Ergebnis auslesen
sTmp := activeThd.StrResult;
if activeThd.Result = 3 then showmessage(sTmp);
finally
activeThd.Terminate;
end;
end;
Komischerweise erhalte ich den LONGINT Wert Result den richtigen Wert zurück, aber die property strResult ist immer leer.
Woran kann das liegen ?
Data
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]