The symbol ^ is fine, but i think i have to agree with Delphi's philosophy with it. When i have pointer to a class or record variable, i shouldn't need to use:
recordVarPtr^.Property but just recordVarPtr.Property
Because there is no other possible outcome from it than writing it with just dot. All i can see is that it makes it clear that we are dealing with pointed value. Pointer itself is just a memory address, there's no mistaking the dot usage for meaning the value only.