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.