Click here to Skip to main content
11,575,925 members (56,017 online)
Click here to Skip to main content

Serializing Data to / from an ASCII-file

, 9 Nov 2000 CPOL 64.6K 1.4K 19
Rate this:
Please Sign up or sign in to vote.
A series of articles that resulted from experimenting with adding Drag and Drop features to my existing application.

This article is part of the drag and drop interface samples.

  1. Serializing ASCII Data
  2. Modeless child dialog
  3. Modeless sibling dialog
  4. The drag source
  5. The MFC drop target
  6. The TBTextTarget class

  • Download source files - 24 Kb

    Preface

    The CArchive object has methods called ReadString and WriteString. ReadString reads a complete line stopping at, but not including the Carriage return/Line feed pair. WriteString puts the specified string value into the archive, but without the CR/LF. ReadString detects EOF by a returning zero which can be used in a while-conditional.

    This is from the sample application, step zero:

    void CInterfaceDoc::Serialize(CArchive& ar)
    {
        <font color="#000080">if</font> (ar.IsStoring())
        {
            for (int i=0; i<m_String.GetUpperBound(); i++)
                ar.WriteString(m_Strings[i]+"\n");
        }
        <font color="#000080">else</font>
        {
            m_Strings.RemoveAll();
    
            int idx=0;
            CString t;
    
            TRY
            {
                <font color="#000080">while</font>(ar.ReadString(t))
                {
                    m_Strings.SetAtGrow(idx, t);
                    idx++;
                }
            }
            CATCH(CArchiveException, e)
            {
    <font color="#000080">#ifdef</font> _DEBUG
                TCHAR szCause[255];
                CString strFormatted;
                e->GetErrorMessage(szCause, 255);
    <font color="#008000">            // in real life, it's probably more
                // appropriate to read this from
                // a string resource so it would be easy to
                // localize</font>
                strFormatted = _T("CArciveException: ");
                strFormatted += szCause;
                AfxMessageBox(strFormatted); 
    <font color="#000080">#endif </font><font color="#008000">//_DEBUG</font>
            }
            END_CATCH;
    
            UpdateAllViews(NULL);
        }
    }
    
  • License

    This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Share

    About the Author

    Thomas Blenkers
    Web Developer
    Germany Germany
    PhD Chemist,
    programming with MSVC & MFC since 1996

    You may also be interested in...

    Comments and Discussions

     
    Generalhiiiii question! Pin
    Arsineh Boodaghian26-Apr-09 7:16
    memberArsineh Boodaghian26-Apr-09 7:16 
    AnswerRe: hiiiii question! Pin
    Thomas Blenkers26-Apr-09 9:07
    memberThomas Blenkers26-Apr-09 9:07 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Terms of Use | Mobile
    Web04 | 2.8.150603.1 | Last Updated 10 Nov 2000
    Article Copyright 2000 by Thomas Blenkers
    Everything else Copyright © CodeProject, 1999-2015
    Layout: fixed | fluid