Looks to me it doesn't matter if you typecast or use pointer, both do the same
[pascal]procedure TForm1.FormCreate(Sender: TObject);
var b: byte;
s: shortint; ps: PShortint;
begin
b:=230;
s:=b;
memo1.Lines.Add(inttostr(s)); // typecasted
ps:=@b;
memo1.Lines.Add(inttostr(ps^)); // pointer
end;[/pascal]
This results the memo1 to have 2 numbers which are in this case -26 and still same if i change b value to any other.