Это многое объясняет, спасибо.в сиСмысл GetPointer()^.DoSomething() как раз в сокращении кода. Тип возврата функции компилятору известен.А верните само значение из функции, зачем плодить лишний код ?
На мой взгляд в языке со строгой типизацией для критически важных объектов фокусы вроде попытки прочитать INT вместо BYTE должны пресекаться на ранних этапах.