Saving List Items to Disk

I have the following code in my project:

void CIRCServerConnector::SaveServerList(void)
{
      CFile fileServLst("servlist.dat", CFile::modeCreate | CFile::modeReadWrite);

      CArchive arStore(&fileServLst, CArchive::store);

      POSITION aPos = m_listServers.GetHeadPosition();
      CIRCServer* temp;

      while(aPos)
      {
            temp = m_listServers.GetNext(aPos);
            arStore.WriteObject(temp);
      }
      arStore.Close();
}

It is supposed to go through a CTypedPtrList and save each item to disk..one by one. Right now...I am getting a dialog box that pops up and says "An unsupported operation was attempted"...never seen that before. Can anyone help tell me what is going on here?
SGyvesAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Roshan DavisCommented:
Attempting to retrieve a CIRCServer* on any other object will result in a system error (the utterly enigmatic "An unsupported operation was attempted"), MSDN documented something like this.

can u tell me, in which point of code that error comes..?

Rosh :)
0
PriyeshCommented:
Just a reminder list, you might be already doing this.

class CIRCServer : public CObject//derive from cobject to
{
  DECLARE_SERIAL(CIRCServer)
public:
   void Serialize(CArchive& ar) ;
public:
   CString szName ;
};

IMPLEMENT_SERIAL(CIRCServer, CObject, 1)//needed to enable serialization

void CIRCServer::Serialize(CArchive& ar)//Called by WriteObject
{
   if(ar.IsLoading())
     ar >> szName ;
   else
     ar << szName ;  
}

And, a try - catch to catch CArchiveException or others to get any further details abt the error
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
SGyvesAuthor Commented:
Rosh...it happens right on the WriteObject line:

arStore.WriteObject(temp);


that one.
0
Become a CompTIA Certified Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

SGyvesAuthor Commented:
OMG...I think I forgot the IMPLEMENT_SERIAL and DECLARE_SERIAL statements.   (Slapping my head)

0
SGyvesAuthor Commented:
A long day indeed...that was it.
0
SGyvesAuthor Commented:
Hey...what is the best way to read these back from disk untill there are no more....meaning...how can I check for EOF??
0
PriyeshCommented:
Would this work for you??

      CIRCServer clsServer ;
      clsServer.szName = "IRCServer" ;

      CTypedPtrArray<CObArray, CIRCServer*> clsArraySave, clsArrayLoad ;
      clsArraySave.Add(&clsServer) ;

//Write.
      {
            CFile clsFile("c:\\ircobjects.dat", CFile::modeCreate|CFile::modeWrite) ;
            CArchive ar(&clsFile, CArchive::store) ;
            clsArraySave.Serialize(ar) ;
      }


//Read
      {
            CFile clsFile("c:\\ircobjects.dat", CFile::modeRead) ;
            CArchive ar(&clsFile, CArchive::load) ;
            clsArrayLoad.Serialize(ar) ;

            CIRCServer* pServer = clsArrayLoad.GetAt(0) ;
            TRACE("Name = %s\n", pServer->szName) ;
      }

0
SGyvesAuthor Commented:
Yes...I believe that will work. As I understand...the serialize for the CTypedPtrList serializes all elemnts into the file. Cool.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.