You can create your own assign or clone in your own object, if you don't want TPersistent.
You should be aware, that while you can just copy integers or strings (dest.FString1 = src.FString1) => you may not want to do so with any objects that are stored in your object. You would have to create a new instance, and assign it separately.
There is no way to fully autocreate the assign procedure. But if you know regular expression replaces, you can speed up the process considerably.
Copy the declaration of all variables, so you have
FVal1: Integer;
FStr1, FStr2 : String;
- Replace all "," (comma) by newline
- replace all ":.*?;" by nothing
Then you should have each identifier on a line of it's own
- replace: (\S*)
with: dest.$1 := src.$1;
You so need to keep it in sync, if you add new variables.