Arrays vs. Packed Arrays of Char

I've always known pascal strings to be "packed" arrays of char
(actually declared as "packed array[n..m] of char"). But then
one day when I as working with Registry returned buffer values
(e.g. for a key name or a value name) low and behold I:

1) Used "array[n..m] of char"
2) Was returned a "null terminated" string of characters
3) Assigned the array to a "string" variable (e.g.
"mystring := myarray").

I was in somewhat of a bewildered state. (a) Delphi let's you
do this? I shouldn't really be surprised since Delphi really
bastardizes "standard" pascal to the greatest extreme and (b)
Delphi let's you do this? (intentional double take).

Is there a story behind this other than to support
interoperability between arrays of characters and strings?