Workarounds for StructPut/StructGet limitations

Does anyone know any good (i.e., robust) workarounds for the limitations of StructPut/StructGet? I would like to use a top-level structure that contains other structures as members. Of course, this is a no-no, because member STRUCTS are disallowed by StructPut/StructGet. On top of that, the sub-structures I would like to include also contain some disallowed member types, such as strings.

I could, I suppose, write my own routine that writes the STRUCT data to some sort of string using, say, keyword-value pairs, but this sounds miserable and totally pointless, as it will erase many of the benefits of using STRUCTS in the first place.

A previous node dealt with writing a "complicated" structure to a string, but there is no way to read that string back into the structure (as far as I'm aware):
http://www.igorexchange.com/node/1028

Thanks!
Nick
Not that I know of.

However, if you give more detail about what you're trying to accomplish (ie. why you need to read and write complicated structures to a string) you might get some ideas of how to do what you want to do in a different (and maybe better) way.
I don't see any prohibition on using nested structures with StructPut and StructGet. This code works in Igor Pro 6.05 and 6.1:


Structure TestSubStruct
	char text[32]
	int32 i32
EndStructure

Structure TestStruct
	char text[32]
	int32 i32
	STRUCT TestSubStruct subStruct
EndStructure

Function Test()
	STRUCT TestStruct s1
	
	s1.text = "This is a test"
	s1.i32 = 1234
	s1.subStruct.text = "Another test"
	s1.subStruct.i32 = 4321
	Print s1
	
	String str
	StructPut/S s1, str
	
	STRUCT TestStruct s2
	StructGet/S s2, str
	Print s2
End


You can store strings using char fields as shown above.