This is going to be a short one. After months of no releases, here it is: DeHL 0.8 (see changelog for the list of changes on this release). As I mentioned previously, this release will only work on Delphi 2010, since the number of changes required to support serialization was quite big.
I must confess, this is the first time in my programming career that I had to interact with serialization (excluding the times when the frameworks do that for you). I had to learn quite a bit and changed my internal design three times.
So, here’s an example how to serialize a TFormatSettings structure into binary format:
var LBinFile: TFileStream; LBinSerializer: TBinarySerializer<TFormatSettings>; LSettings: TFormatSettings; begin { Obtain current thread's format settings } GetFormatSettings(GetThreadLocale(), LSettings); { Create a serializer and a file stream } LBinSerializer := TBinarySerializer<TFormatSettings>.Create(); LBinFile := TFileStream.Create('dump_obj.bin', fmCreate); { Serialize the structure } try LBinSerializer.Serialize(LSettings, LBinFile); finally LBinFile.Free; LBinSerializer.Free; end; end;
… and here’s an example how to deserialize it:
var LBinFile: TFileStream; LBinSerializer: TBinarySerializer<TFormatSettings>; LSettings: TFormatSettings; begin { Create a serializer and a file stream } LBinSerializer := TBinarySerializer<TFormatSettings>.Create(); LBinFile := TFileStream.Create('dump_obj.bin', fmOpenRead); { Deserialize the structure } try LBinSerializer.Deserialize(LSettings, LBinFile); finally LBinFile.Free; LBinSerializer.Free; end; end;
Note: I have written quite a few unit tests to support the new changes, but most certainly there are hidden bugs. If you find one please report it here.
Other Note: I exhausted my idea jar regarding new features. If you have an idea please do not hesitate to drop me a comment or an email.
Have Fun!