The great thing about dynamic strings is that they are still compatible with short strings, this is why even with dynamic strings, indexing starts at the index 1. So accessing via pointer or array notation from Str[1] to Length(str) does work on both. About the length, this is why in my example used SizeOf. That said, text is not just text, and there are different encodings and codepages, which is something one should be careful about when accessing the raw binary data of a string, because two strings that look alike might not have the same binary representation, and something that looks well in one program or on one machine, read in it's raw binary format by another application (either stored as file or transmitted to a network) not aware of the encoding, might come out as complete garbage on the other end.
Every european who tried writing a program that prints something containing a € sign probably know that struggle