Hi
Well, yes the 'with' construct can be a bit /dangerous/ for/to the unwary...
Basically what 'with' does is *keep* the temporary result /alive/ long enough, for you to use it and then discards it

So you can not make something like String with records?
Well, yes and no - it depends on what you're doing...

If you need to *have* the content in the record, then use 'ShortString' or for longer than 256 char strings use e.g.: 'array[0..1023] of char;' Those strings will stay in the record even when copied or written to disk.
Otoh, nothing stops you from using ansistrings or widestrings in records, just as long as you're clear about the fact, that it's *only* a pointer to the actual /string-content/ placed somewhere else. Write such a record to file and you'll see, only the pointer-value of the string is written, *not* the actual content!
HTH
Regards Benny