Hallo,
Du machst gleich zwei Fehler:
Erstens (Dein angesprochenes Problem):
Delphi-Quellcode:
onstructor HTTPDownload.Create(Const FDown: TStringList);
Begin
HTTPSocket:=TIdHTTP.Create(Nil);
Down:=TStringList.Create;
Down:=FDown; // <--
Inherited Create(False);
End;
In der markierten Zeile überschreibst Du die gerade erstellte TStringList-Instanz mit der übergebenen. Bedenke, dass "Down" nur ein Pointer auf ein Objekt ist. Damit zeigen also zwei Variablen auf das gleiche Objekt. Außerdem erzeugst Du ein Speicherleck.
Lösung:
Delphi-Quellcode:
onstructor HTTPDownload.Create(Const FDown: TStringList);
Begin
HTTPSocket:=TIdHTTP.Create(Nil);
Down:=TStringList.Create;
Down.Assign(FDown); // <--
Inherited Create(False);
End;
Zweitens:
Delphi-Quellcode:
Procedure KnopfUpdateClick(Sender: TObject);
Var Variable: TStringList;
Begin
Variable:=TStringList.Create;
Variable.Add(....);
HTTPThread:=HTTPDownload.Create(Variable);
While Not HTTPThread.Terminated Do Application.ProcessMessages;
Variable.Free;
End;
Wozu ein Thread, wenn Du eh darauf wartest, dass er fertig wird? Du tust ja nach dem Beenden nichts mehr.
Überdenke da mal Dein grundsätzliches Design.
Gruß
xaromz