Am 21.07.2017 10:44 schrieb "Santiago A." <s...@ciberpiula.net>: > > El 20/07/2017 a las 15:50, Sven Barth via fpc-pascal escribió: >> >> Am 20.07.2017 13:01 schrieb "Bo Berglund" <bo.bergl...@gmail.com>: >> > >> > On Thu, 20 Jul 2017 11:11:50 +0200, Maciej Izak >> > <hnb.c...@gmail.com> wrote: >> > >> > >2017-07-20 11:03 GMT+02:00 Bo Berglund <bo.bergl...@gmail.com>: >> > > >> > >> So since I don't really want to use a global, is it possible to >> > >> declare a local variable static in the sense that it retains its >> > >> values across calls to the procedure? >> > >> If so how is it done? >> > >> >> > > >> > >procedure foo; >> > >{$PUSH} >> > >const{$J+} >> > > s : string =''; >> > >{$POP} >> > >> > Thanks, >> > but it looks a bit involved, probably better to use an object field >> > variable instead only accessible from the internal methods. >> >> If you don't want to use $push/$pop then you can also simply enable $J+ for the whole unit. But this will also mean that global constants are writable. > > Well, I'm an old dog so I prefer old fashion ways. A variable that retains its value is, from memory point of view, a global variable. I mean, the memory is never freed, it's not freed when it goes out of scope. So, the problem is what to do to limit the visibility to the procedure.
Writable constants *are* the old fashion way, cause this kind of usage stems from Turbo Pascal and allowed to restrict the visibility of symbols. Regards, Sven
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal