>Using uninitialised variables is virtually always bad, regardless of the
> scope. And the fact that
> global variables are zeroed at the program start is afaik not defined > by the Pascal standard. It's
> just a side effect of the way most operating systems work.

I think something like:

procedure test;
var blah: integer = 0;
begin
end;

Is useful.. i.e. initialized variables that are done on the spot.

And similarily a record could be:

procedure test;
var blah: TRec autoinit;
begin
end;

This would allow safe programming without compromising backwards compatibility.

But... in the mean time.. a solution is to make a standard record init procedure and do it like:

procedure test;
var blah: TRec;
begin
 init(blah);
end;

Which will be what I use for now...

And always do this by habit for safety now that I know this trick of the fillchar and such - only ever avoiding it when needing speed (but that is premature optimization).

I realize that local scope uninitialized vars are the way systems work according to the system.. but we are humans and error prone humans...We can make languages safer I think and more consistent and human friendly at a higher level. Humans just make so many mistakes even though systems are supposed to work they way they are.

i.e. really it is just a convenience and a "standard good practice" being now recommended right within the programming language...and more safety as an option. Just as I am also a fan of reference counted ansistrings versus using less safe pchars.. etc.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to