AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TStringList

Ein Thema von Christian.Ossi · begonnen am 17. Jul 2006 · letzter Beitrag vom 17. Jul 2006
 
Christian.Ossi

Registriert seit: 23. Mai 2004
Ort: Greußen
91 Beiträge
 
Delphi 2006 Architect
 
#1

Problem mit TStringList

  Alt 17. Jul 2006, 16:11
Ich habe eine TStringList in einer Procedure vereinbart, die dort auch über Variable:=TStringList.Create erzeugt wird. Danach werden Dateinamen in die Liste geschrieben und die Liste an einen Thread übergeben, der die Dateien downloaden soll. Der Thread hat seine eigene TStringList und deshalb wird im Constructor die Variable übergeben.

Soweit sogut.

Der Thread macht was er soll und beendet sich am Ende und gibt seine eigene TStringList wieder frei, jedoch wenn ich am Ende der Procedure wenn alles schon abgeschlossen ist, den Befehl für die Freigabe der TStringList Variable (Variable.Free) einfüge, stürzt dort das Programm ab.


Quelltexte

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; <--- ABSTURZ
End;
Delphi-Quellcode:
HTTPDownload = Class(TThread)
Protected
Procedure Execute; Override;
Private
HTTPSocket: TIdHTTP;
    Stream: TFileStream;
      Down: TStringList;
Public
Constructor Create(Const FDown: TStringList);
 Destructor Destroy; Override;
End;
Delphi-Quellcode:
Constructor HTTPDownload.Create(Const FDown: TStringList);
Begin
HTTPSocket:=TIdHTTP.Create(Nil);
Down:=TStringList.Create;
Down:=FDown;
Inherited Create(False);
End;

Destructor HTTPDownload.Destroy;
Begin
HTTPSocket.Free;
Down.Free;
Inherited;
End;

Procedure HTTPDownload.Execute;
Var I: Word;
Begin
FreeOnTerminate:=True;
If Not Terminated then
Begin
For I:=0 to (Down.Count - 1) Do
Begin
Stream:=TFileStream.Create(Down[I],fmCreate);
Try
HTTPSocket.Get(Down[I],Stream);
FreeAndNil(Stream);
Except
End;
End;
Destroy;
End;
End;
Christian Rose
© Christian.Ossi
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz