Do you know about this feature:
var
SomeRec: TSomeRecord = ();
This initializes the record without needing fillchar. I assume your "Default()" call initializes the record initially. You can eliminate the default() call by initializing the record as part of your declaration.
Some criticize this as being C++ like and not pascalish. I find it to be a contract set up at the declaration stage without needing for ugly fillchar hacks which seem like a mess... But old pascal programmers are used to and like fillchar.
However, my email here may have nothing to do with what you are trying to accomplish... As you want a some kind of generic function to fillchar any record, I guess... My solution above, is to use () to fillchar it to 0 without requiring any call to fillchar. If you want to add values other than zero then you can set them up inside the initialization instead of a blank ()
An interesting trivia note: delphi 5 doesn't seem to allow initialized record declarations in local variables inside a procedure but allows it for globals or unit variables...
Also the fpc compiler gives a warning:
Warning: Some fields coming after "" were not initialized
When using () to initialize a record... I'm not sure if this warning is correct, as theoretically the compiler should in fact set all record values to zero in the case of ()
Should this warning be looked at as a possible erroneous warning?
Again, sorry if my answer to your email has nothing at all to do with what you are trying to accomplish!
Dennis wrote 15 lines
In this old statement, I don't need to know the type of aRecord
but if I want to use Default, I have to know the exact type of the varaible
aRecord and pass it to Default(aRecordType) e.g. aRecord :=
Default(aRecordType) //where var aRecord : aRecordType
Is it possible to use default without knowing the variable type? (it is
because sometimes the type get renamed)
Dennis
_______________________________________________
fpc-pascal maillist -
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal