En/na Dave Coventry ha escrit: > Hi, > > If I pass a TStringList to a function: > > function TSLFunctn(myTSL: TSltringList):integer; > var i: integer; > begin > Result:=0; > for i:=0 to myTSL.Count-1 do //<-----------fails here > begin > Result+=strtoint(myTSL.Strings[i]); > end; > end; > > The function fails when I try to assign quantify myTSL.Count.
works here (without the typo) > > However, this works: > > function TSLFunctn(myTSL: TSltringList):integer; > var i: integer; > internalTSL: TStringList; > begin > internalTSL:= TStringList.Create; > internalTSL:=myTSL; this is: 1) a memory leak (you create a stringlist then ignore it, losing the pointer) 2) exactly the same as before (a stringlist variable, as any other class, is actually a pointer, so if you use := both are pointing at the same object, if you want to make a copy you have to use assign, provided that the class implements it correctly) > Result:=0; > for i:=0 to internalTSL.Count-1 do //<-----------works > begin > Result+=strtoint(internalTSL.Strings[i]); > end; > internalTSL.Free; and here you are freeing the original stringlist, not the locally created one. Bye -- Luca Olivetti Wetron Automatización S.A. http://www.wetron.es/ Tel. +34 93 5883004 Fax +34 93 5883007 _______________________________________________ Lazarus mailing list [email protected] http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
