|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
explaination on assings and free parameters
Hello
What are the do and donn't when passing Lists from one procedure to another. I do have three different procedures: P; var LStringlist : TStringlist; begin LStringlist : TStringlist.create; LStringlist.add procedureTwo(Lstringlist); if LStringlist <nil then LStringlist.free; end; procedureTwo(AStringList : TStringlist = nil); var lStringlist : TStringlist; begin if AStringlist = nil then lStringlist := TStringlist.create else lStringlist = AStringlist; //do something LStringlist.free; end; ProcedureThree begin proceduretwo; end I had an AV problem when freeeing the LStringlist in This was because it's already been freed in ProcedureTwo. However where and when should the lStringlist in each procedure be freed? ( I thought that after lStringlist = AStringlist in procedureTwo and the LStringlist.free the original LStringlist in P would also have been freed; Debugging shows that this is not true. ) I hope your answers would help me understand how and when a parameter may and should be freed. Regards Andries [Non-text portions of this message have been removed] |
|
#2
|
|||
|
|||
|
explaination on assings and free parameters
Hi,
procedureTwo(AStringList : TStringlist = nil); Your code creates a new local StringList in procedureTwo. Use a var parameter: procedureTwo(var AStringList : TStringlist); to pass the existing StringList, which is what I think you want. Martin. |
![]() |
| Viewing: Web Development Archives > Mailing Lists > Delphi > explaination on assings and free parameters |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|