I'm not sure, but the handling of Wide/Unicode strings looks wrong: vaBinary, vaLString, vaWString{$IFNDEF VER2_2}, vaUString{$ENDIF}: begin Count:=ReadIntegerContent; SkipBytes(Count); end; For WideChars Count*2 bytes have to be skipped, according to e.g. ReadWideString. DoDi