Well, here is an article on the "Normal" way of doing it: http://www.delphicorner.f9.co.uk/articles/op6.htm
Google for "variant records delphi" will turn up quite a few results.

The other way is a bit more complicated, but it saves the overhead that a standard variant record creates. The way I'm talking about uses strong usage of pointers and other fun things. I'll see if I can find a simple sample on my drive some place, and if so I'll post it here.