πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #11626

Re: Delphi Create / free (newbie vraagje)

#11626
From: KLinZ
Date: Sun, 27 Jan 2002 21:51
56 lines
2501 bytes
"F Cocquyt" <Frederik.cocquyt@NOSPAMpandora.be> wrote in message
news:uPW48.4490$%Y.1056550948@hebe.telenet-ops.be...
> Hallo,
>
> Ik heb volgend vraagje:
> Ik creeοΏ½r een random aantal series in een TDBChart. als volgt:
>
> var
>  teller: integer;
>  MijnSeries:TBarseries;
> begin
> ....
> for teller:=1 to DM.DaSPloegen.RecordCount do
>     begin
>     MijnSeries := TBarSeries.Create(Self);
>     end;
>
> .....
>
> Ik zou deze series bij het sluiten van mijn form willen vrijgeven, maar
> indien ik zeg
> MijnSeries.free worden deze niet allemaal vrijgegeven (of heb ik het
> verkeerd voor. ik krijg hier wel een acces violation error door)
> Hoe zorg ik er voor dat ze wel allemaal worden vrijgegeven?
>


Je wijst steeds een nieuwe instantie van het object aan dezelfde
objectpointer toe. Je moet echter elke instantie van het object bijhouden.
Omdat je de parameter 'self' aan de constructor meegeeft hoef je niet te
free'en. Het parent object (in dit geval TDBChart) zorgt er dan voor dat de
child objecten opgeruimd worden. Als je per se zelf wilt free'en kun je het
zo oplossen:

var olist: TList;
    MijnSerie: TBarseries;

olist:=TList.Create;
DM.DaSPloegen.First;
while not DM.DaSPloegen.EOF do
begin
    MijnSerie:=TBarSeries.Create(nil);      // hier nil meegeven ipv self
    TList.Add(MijnSerie);
end;

Let hier ook op het gebruik van de while not ...eof do i.p.v. de for-loop.
Dit geeft minder kans op fouten.

Bij het free'en kun je dan dit doen:

for i:=0 to List.Count-1 do
     TBarSeries(List[i]).Free;


Joris.
Technical Details
Message-ID: <a31sub$152bpp$1@ID-79907.news.dfncis.de>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!130.133.1.3!fu-berlin.de!uni-berlin.de!c71152.upc-c.chello.NL!not-for-mail
References: <uPW48.4490$%Y.1056550948@hebe.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,15ac39b62e0a474e
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-01-27 13:54:22 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!130.133.1.3!fu-berlin.de!uni-berlin.de!c71152.upc-c.chello.NL!not-for-mail
From: "KLinZ" <klinz@hetnet.nl>
Newsgroups: be.comp.programming
Subject: Re: Delphi Create / free (newbie vraagje)
Date: Sun, 27 Jan 2002 22:51:39 +0100
Lines: 59
Message-ID: <a31sub$152bpp$1@ID-79907.news.dfncis.de>
References: <uPW48.4490$%Y.1056550948@hebe.telenet-ops.be>
NNTP-Posting-Host: c71152.upc-c.chello.nl (212.187.71.152)
X-Trace: fu-berlin.de 1012168459 38874937 212.187.71.152 (16 [79907])
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000