I used to do things like that so that I could use one procedure for different types of parameters. Are you able to see the inner workings of the procedure with untyped parameter?
I remember having code to test what parameter was and typecast it inside of the procedure...
That sort of thing is best avoided if at all possible, since you're bypassing the type checks that make Pascal worth having.
If the parameter is a descendant of TObject (i.e. an instantiated class) then you can find out what the actual class is, but there's no "what type is this?" functionality in the basic (i.e. pre-OO) language. Even if you are using objects, I don't think you can easily use a case statement.
You can obviously use polymorphic functions, but there you are at the mercy of Pascal's sloppy implicit type conversions (which, as I've said before, Wirth tightened up in later languages). But a better solution is to use variant records where possible, together with careful consideration of where parameters can be declared const to reduce the amount of stuff copied around.
The implementation of procedures with untyped parameters, like the implementation of direct pointer manipulation, should be kept out of the hands of inexperienced programmers or at the very least subject to careful code review and testing.
MarkMLl