Why? Passing a record by reference looks like this: procedure SomeProc(var AMyRec : TMyRecord);
Passing an object reference looks like this: procedure SomeProc(const AMyObj : TMyObject);
I don't see that these are somehow onerous or hiding anything.
Add to that the unfounded non-orthogonality (like in C++, references are technically the same as pointers, but not syntactically, and not in the type system, leading to combinatorial explosion. And of course the bloated standard library is proof).
Furthermore this approach doesn't work for pointers that point to arrays. Again, Delphi has its own zoo of workarounds that OOP enthusiast will think are so much better -- from dynamic arrays (really weird interactions with reallocations combined with "var" modifier or not), to ObjectLists (not typed) to a version of generics (has its own technical problems). But what I want is the simple and obvious thing (pointer parameters without typedefs) and there's no good reason why we shouldn't have it.
There is no ambiguity and nothing is hidden. Both examples are passing a reference to the procedure and all Pascal programmers will know what it means.
I think your argument boils down to a lack of experience with Pascal (which is fine). But these things you think are problems simply aren't.
Depending on what you're doing exactly there are things you can do to mitigate that. If you're using records, you can just pass the record by reference instead. If you're using objects then you don't often need separate pointer types to them (the object reference is a pointer itself). If it makes sense for what you're doing you can also use untyped parameters:
http://docwiki.embarcadero.com/RADStudio/Rio/en/Parameters_(...
If you don't need to actually deference the pointers you can use the Pointer type (and if you still need to get at the data in some circumstances you can cast to a typed pointer inside the function):
http://docwiki.embarcadero.com/RADStudio/Rio/en/Pointers_and...