Thema: Delphi Problem mit TStringList

Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Problem mit TStringList

  Alt 17. Jul 2006, 16:43
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
  Mit Zitat antworten Zitat