Re: Can't read CString after serialization



You didn't say which version of C++ you are using (although you did mention one of the ATL functions), but this might be your problem:

http://support.microsoft.com/kb/193100

Are you building in Unicode? Perhaps you could also list your serializing code and that might reveal something. These kinds of problems are why I typically don't use serializing any more. I like to use XML, but any kind of ASCII based file format would work in my opinion. They are easier to read when you want to change the versions and/or access it from another program. You may also find this article interesting:

http://www.codeproject.com/KB/cpp/serialization_primer1.aspx

Note, this is part 1 of 3 parts.

Tom

"Alexh" <alexh1@xxxxxxxxxxxxx> wrote in message news:9d0514d8-6156-4bd2-9e94-8b8da3292b60@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hi,

I have a CArray <MyClass, MyClass&> MyClassArray. MyClass contains
various elements, int, double and a CString (ex. MyString).
MyClass.cpp has the necessary Serialize statement.

In my code, MyClassArray is generated as necessary and serialized to a
file. Later it is read from the file and restored into MyClassArray.
At this point I get an error whenever I access the CString element in
MyClass.

I can access all other int or double elements in MyClass just fine.
However, any access of the form -

MyCArray.GetAt(i).MyString or -

MyClass = MyCArray.GetAt(i);
MyString1 = MyClass.MyString;

gives a run time error in the MS file atlsimpstr.h. Here is the line
from the file-

// This is a part of the Active Template Library.
// Copyright (C) Microsoft Corporation
// All rights reserved.

static CStringData* __cdecl CloneData( __in CStringData* pData )
{
CStringData* pNewData = NULL;

IAtlStringMgr* pNewStringMgr = pData->pStringMgr->Clone(); /////this
line fails


All of the vars on that line are reporting as "expression cannot be
evaluated". Any idea what's going on here? I don't think it's
something obvious because as I said, all of the numeric elements are
accessible.

Thanks




.



Relevant Pages


Loading