Non fixed strings are those you can control the size of and its done for you in the background, those are called
managed strings and they are pointers to a chuck of memory which you don't need to deal with directly..
However there is an issue of using those inside a record. when you move a record to another location like disk
for example, all you have done is moved the pointer to the string, not the actual contents and the next time
you load it it'll be pointing to garbage. Those strings are huge strings {$H+} etc.
Short strings or Array of char's are directly bound to the record, there are no memory pointers in the record
pointing to background managed strings.
You can use dynamic strings in a record but care must be taken to make sure they get released and you
can't directly transpose them to file and such.
So using a string with Name:String[?] to indicate the number of characters you want it hold will create a
fixed chunk of space within that Record that will live and stay there, not be somewhere in memory management
heap elsewhere.
STrings with Size indicators are called short strings and are limited to their range. 255..
if you need more than that, you can use an Array[0....500] of char for example..
it'll just make the record larger, even if you don't use all of the array,.
hope that helped some..