bool CFileUtil::writeVariant(IFileObject* file, const CVariant& value) { EVariantType type = value.type(); if ( !file->write(&type, sizeof(uint8)) ) return false; switch(type) { case VT_NONE: break; case VT_BOOLEAN: { bool writebool; if ( !value.get(writebool) || !file->write(&writebool, sizeof(bool)) ) return false; } break; case VT_UINT: { uint64 writeuint; if ( !value.get(writeuint) || !file->write(&writeuint, sizeof(uint64)) ) return false; } break; case VT_INT: { int64 writeint; if ( !value.get(writeint) || !file->write(&writeint, sizeof(int64)) ) return false; } break; case VT_DOUBLE: { double writedouble; if ( !value.get(writedouble) || !file->write(&writedouble, sizeof(double)) ) return false; } break; case VT_STRING: { CString writestr; if ( !value.get(writestr) || !CFileUtil::writeString(file, writestr) ) return false; } break; default: return false; } return true; }