<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title>Signature</title>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";
        color:black;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
pre
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=white lang=EN-US link=blue vlink=blue>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Guys,<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hope you don’t mind me sticking my
nose in here. Firstly I agree with the sentiment that you should try and avoid
creating objects in one place and freeing in another, however I don’t think
that this situation represents that, think of a function that returns a class
as a factory method, these obviously are quite common and not bad practice at
all, in fact a constructor is a factory type method.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span lang=SV
style='font-size:10.0pt;font-family:"Courier New";color:navy'>Procedure DoSomthing;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span lang=SV
style='font-size:10.0pt;font-family:"Courier New";color:navy'>Var<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span lang=SV
style='font-size:10.0pt;font-family:"Courier New";color:navy'> List :
TStrings;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>Begin<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>List := GetLoadsOfStrings;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>try<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> if assigned(List) then<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> begin<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> …do lots of stuff with the list<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> End;<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>Finally<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> List.Free;<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>End;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>End;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Is really not much different from <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span lang=SV
style='font-size:10.0pt;font-family:"Courier New";color:navy'>Procedure DoSomthing;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span lang=SV
style='font-size:10.0pt;font-family:"Courier New";color:navy'>Var<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span lang=SV
style='font-size:10.0pt;font-family:"Courier New";color:navy'> List :
TStrings;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>Begin<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>List := TStringList.Create;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'> PopulateList(List); <o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>try<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> if List.Count > 0 then<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> begin<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> …do lots of stuff with the list<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> End;<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>Finally<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'> List.Free;<o:p></o:p></span></font></p>
<p class=MsoNormal style='text-indent:6.0pt'><font size=2 color=navy
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:navy'>End;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'>End;<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>The issue is where the variable is
declared, and the scope of the ownership not the act of creation, creation is fine
to delegate to a factory type method.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Regards Tim.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:windowtext'>
<hr size=3 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:windowtext;font-weight:bold'>From:</span></font></b><font
size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
color:windowtext'> delphi-bounces@delphi.org.nz
[mailto:delphi-bounces@delphi.org.nz] <b><span style='font-weight:bold'>On
Behalf Of </span></b>Rohit Gupta<br>
<b><span style='font-weight:bold'>Sent:</span></b> Friday, 4 May 2007 12:22 PM<br>
<b><span style='font-weight:bold'>To:</span></b> vss@vss.co.nz; <st1:PersonName
w:st="on">NZ Borland Developers Group - Delphi List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [DUG] Dumb Friday
Question</span></font><font color=black><span style='color:windowtext'><o:p></o:p></span></font></p>
</div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>I would go along with Robert, you should not return
complex types from functions that create them, It makes the code
messy, you create it in one place and free it in another. Any sort of
code analyser would also complain about this. You could return a string =
stringlist.text and assign it to a local stringlist.<br>
<br>
Jeremy Coulter wrote: <o:p></o:p></span></font></p>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>Hi All. This is a question that might be infulenced
by some serious lack of sleep :-)<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>I have a funtion. Its return result is a
TStringlist.<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>In my code I create a TStringlist then add
my values to it, then pass this to the RESULT varaible for the function.<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>Now, this is prob. an obvious answer than
I prob. do actually know, but if I got:-<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>sResult := TStringList.create;<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>sResult.add('blah');<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>Result:=sResult;<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>Then if I free sResult, then I loss the values I
added, and the result is empty as you would expect.<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>But the issue I have is, so if I DONT free sResults,
what happens to it? Surley it stays in memory,a dn I would end up with a memory
leack after repeaditive calls. Is that right? Or is because the variable is
function specific its free by default etc?<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>Its a basic question I know....but the more I
thought about it the more uncertain I became....I really need some sleep so
that prob. the real probelm :-)<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'>Jeremy<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Tahoma><span style='font-size:
10.0pt;font-family:Tahoma'> <o:p></o:p></span></font></p>
</div>
<pre wrap=""><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre
style='text-align:center'><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt'>
<hr size=4 width="90%" align=center>
</span></font></pre><pre><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt'><o:p> </o:p></span></font></pre><pre><font
size=2 color=black face="Courier New"><span style='font-size:10.0pt'>_______________________________________________<o:p></o:p></span></font></pre><pre><font
size=2 color=black face="Courier New"><span style='font-size:10.0pt'>NZ Borland Developers Group - <st1:place
w:st="on">Delphi</st1:place> mailing list<o:p></o:p></span></font></pre><pre><font
size=2 color=black face="Courier New"><span style='font-size:10.0pt'>Post: <a
href="mailto:delphi@delphi.org.nz">delphi@delphi.org.nz</a><o:p></o:p></span></font></pre><pre><font
size=2 color=black face="Courier New"><span style='font-size:10.0pt'>Admin: <a
href="http://delphi.org.nz/mailman/listinfo/delphi">http://delphi.org.nz/mailman/listinfo/delphi</a><o:p></o:p></span></font></pre><pre><font
size=2 color=black face="Courier New"><span style='font-size:10.0pt'>Unsubscribe: send an email to <a
href="mailto:delphi-request@delphi.org.nz">delphi-request@delphi.org.nz</a> with Subject: unsubscribe<o:p></o:p></span></font></pre>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>-- <o:p></o:p></span></font></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Rohit Gupta</span></font></b></strong><o:p></o:p></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>B.E. Elec. M.E. Mem IEEE
Associate IEE</span></font></b></strong><o:p></o:p></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Technical Manager</span></font></b></strong><o:p></o:p></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Computer Fanatics
Limited</span></font></b></strong><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Tel</span></font></b></strong><font
size=2 color="#666666" face=Verdana><span style='font-size:10.0pt;font-family:
Verdana;color:#666666'> +64 9 4892280</span></font><o:p></o:p></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Fax</span></font></b></strong><font
size=2 color="#666666" face=Verdana><span style='font-size:10.0pt;font-family:
Verdana;color:#666666'> +64 9 4892290</span></font><o:p></o:p></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Email </span></font></b></strong><font
color="#666666"><span style='color:#666666'><a href="mailto:rohit@cfl.co.nz"><font
size=2 color="#0080ff" face=Verdana><span style='font-size:10.0pt;font-family:
Verdana;color:#0080FF'>rohit@cfl.co.nz</span></font></a></span></font><o:p></o:p></p>
<p class=MsoNormal><strong><b><font size=2 color="#666666" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#666666'>Web
</span></font></b></strong><font color="#666666"><span style='color:#666666'><a
href="http://www.cfl.co.nz/"><font size=2 color="#0080ff" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#0080FF'>www.cfl.co.nz</span></font></a></span></font><o:p></o:p></p>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=3 width="100%" align=center>
</span></font></div>
</div>
<p class=MsoNormal><font size=1 color=gray face=Verdana><span lang=EN-NZ
style='font-size:7.5pt;font-family:Verdana;color:gray'>This email and any
attachments contain information, which is confidential and may be subject to
legal privilege and copyright. If you are not the intended recipient, you must
not use, distribute or copy this email or attachments. If you have received
this in error, please notify us immediately by return email and then delete
this email and any attachments.</span></font><font size=2 face="Courier New"><span
lang=EN-NZ style='font-size:10.0pt;font-family:"Courier New"'> </span><u1:p></u1:p></font><o:p></o:p></p>
</div>
</div>
</body>
</html>