CStringArray and CStringList support serialization, but if it were me I'd do
data and specify the file a little more. This is why a lot of people are
using XML these days (it's straightforward to form, read, and parse back).
back creating your vector again at runtime. It makes things a lot easy to
debug when you use a readable file format as well.
I have created a class containing vector<CString> data member.
class BillSlip
{
private:
int ItemNameIndex;
vector<double> Weight,Fine,Tch,Qty,Rate,Lab;
vector<CString> ItemName;
CString CustomerName;
char BillNumber[100],Date[20];
double Material_carry,Money_carry;
double Material_paid,Money_paid;
double Material_carry_left,Money_carry_left;
double Material_debit,Money_debit;
public:
/*member functions are also there*/
};
I write the file in the following way:
fstream BillSlipFile;
BillSlip BSlip;
BillSlipFile.open("c:\\BSlipRec.txt",ios::out|ios::binary|ios::app);
BillSlipFile.write((char*)&BSlip,sizeof(BillSlip));
BillSlipFile.close();
and read the file in the following way:
BillSlipFile.open("c:\\BSlipRec.txt",ios::in|ios::binary|ios::app);
BillSlipFile.read((char*)&BSlip,sizeof(BillSlip));
MessageBox(BSlip.GetCustomerName());
while(!BillSlipFile.eof())
{
BillSlipFile.read((char*)&BSlip,sizeof(BillSlip));
MessageBox(BSlip.GetCustomerName());
}
BillSlipFile.close();
during the read operation I getting
"Unhandled exception at 0x004e774f in billingSystem.exe: 0xC0000005:
Access
violation reading location 0xcdcdcdcd."
and the debugger is pointing to
IAtlStringMgr* pNewStringMgr = pData->pStringMgr->Clone();
in static CStringData* __cdecl CloneData( __in CStringData* pData ) in
atlsimpstr.h
call stack:
billingSystem.exe!ATL::CSimpleStringT<char,0>::CloneData(ATL::CStringData
* pData=0x00c98918) Line 890 + 0xa bytes C++
billingSystem.exe!ATL::CSimpleStringT<char,0>::CSimpleStringT<char,0>(const
ATL::CSimpleStringT<char,0> &
strSrc="????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????")
Line 234 + 0x9 bytes C++
billingSystem.exe!ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char>
::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > >(const
ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > > &
strSrc="????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????")
Line 1038 C++
billingSystem.exe!BillSlip::GetCustomerName() Line 52 + 0x11 bytes C++
billingSystem.exe!BillDialog::ShowRecord() Line 25 + 0x19 bytes C++
billingSystem.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0012f3cc,
unsigned int nID=0x000003f4, int nCode=0x00000000, void (void)*
pfn=0x004c39ba, void * pExtra=0x00000000, unsigned int nSig=0x00000038,
AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 82 C++
billingSystem.exe!CCmdTarget::OnCmdMsg(unsigned int nID=0x000003f4, int
nCode=0x00000000, void * pExtra=0x00000000, AFX_CMDHANDLERINFO *
pHandlerInfo=0x00000000) Line 381 + 0x27 bytes C++
billingSystem.exe!CDialog::OnCmdMsg(unsigned int nID=0x000003f4, int
nCode=0x00000000, void * pExtra=0x00000000, AFX_CMDHANDLERINFO *
pHandlerInfo=0x00000000) Line 85 + 0x18 bytes C++
billingSystem.exe!CWnd::OnCommand(unsigned int wParam=0x000003f4, long
lParam=0x00020654) Line 2300 C++
billingSystem.exe!CWnd::OnWndMsg(unsigned int message=0x00000111,
unsigned
int wParam=0x000003f4, long lParam=0x00020654, long * pResult=0x0012ede4)
Line 1755 + 0x1e bytes C++
billingSystem.exe!CWnd::WindowProc(unsigned int message=0x00000111,
unsigned int wParam=0x000003f4, long lParam=0x00020654) Line 1741 + 0x20
bytes C++
billingSystem.exe!AfxCallWndProc(CWnd * pWnd=0x0012f3cc, HWND__ *
hWnd=0x000e02e6, unsigned int nMsg=0x00000111, unsigned int
wParam=0x000003f4, long lParam=0x00020654) Line 240 + 0x1c bytes C++
billingSystem.exe!AfxWndProc(HWND__ * hWnd=0x000e02e6, unsigned int
nMsg=0x00000111, unsigned int wParam=0x000003f4, long lParam=0x00020654)
Line 389 C++
user32.dll!77d48709()
[Frames below may be incorrect and/or missing, no symbols loaded for
user32.dll]
user32.dll!77d487eb()
user32.dll!77d487ff()
user32.dll!77d70494()
user32.dll!77d4b743()
user32.dll!77d4b7ab()
comctl32.dll!773f6ff6()
comctl32.dll!773f70d8()
comctl32.dll!773f93dd()
billingSystem.exe!AfxGetMainWnd() Line 34 + 0x13 bytes C++
billingSystem.exe!CWinThread::ProcessMessageFilter(int code=0x00000000,
tagMSG * lpMsg=0x0012f0f0) Line 850 + 0x5 bytes C++
billingSystem.exe!_AfxMsgFilterHook(int code=0x77d48709, unsigned int
wParam=0x00020654, long lParam=0x00000202) Line 795 C++
0012f06c()
user32.dll!77d48709()
user32.dll!77d487eb()
user32.dll!77d4ecd2()
user32.dll!77d70494()
user32.dll!77d489a5()
user32.dll!77d553a0()
user32.dll!77d70494()
user32.dll!77d489e8()
user32.dll!77d6e819()
user32.dll!77d65ce2()
billingSystem.exe!CWnd::IsDialogMessageA(tagMSG * lpMsg=0x001558d0) Line
198 C++
billingSystem.exe!CWnd::PreTranslateInput(tagMSG * lpMsg=0x001558d0)
Line
4268 C++
billingSystem.exe!CDialog::PreTranslateMessage(tagMSG * pMsg=0x001558d0)
Line 80 C++
billingSystem.exe!CWnd::WalkPreTranslateTree(HWND__ *
hWndStop=0x000e02e6,
tagMSG * pMsg=0x001558d0) Line 2882 + 0x14 bytes C++
billingSystem.exe!AfxInternalPreTranslateMessage(tagMSG *
pMsg=0x001558d0)
Line 233 + 0x12 bytes C++
billingSystem.exe!CWinThread::PreTranslateMessage(tagMSG *
pMsg=0x001558d0) Line 773 + 0x9 bytes C++
billingSystem.exe!AfxPreTranslateMessage(tagMSG * pMsg=0x001558d0) Line
252 + 0x11 bytes C++
billingSystem.exe!AfxInternalPumpMessage() Line 178 + 0x18 bytes C++
billingSystem.exe!CWinThread::PumpMessage() Line 896 C++
billingSystem.exe!AfxPumpMessage() Line 190 + 0xd bytes C++
billingSystem.exe!CWnd::RunModalLoop(unsigned long dwFlags=0x00000004)
Line 4322 + 0x5 bytes C++
billingSystem.exe!CDialog::DoModal() Line 587 + 0xc bytes C++
billingSystem.exe!BillingApp::InitInstance() Line 423 C++
billingSystem.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000,
HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f4d, int
nCmdShow=0x00000001) Line 37 + 0xd bytes C++
billingSystem.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__
* hPrevInstance=0x00000000, char * lpCmdLine=0x00151f4d, int
nCmdShow=0x00000001) Line 33 C++
billingSystem.exe!__tmainCRTStartup() Line 324 + 0x35 bytes C
billingSystem.exe!WinMainCRTStartup() Line 196 C
kernel32.dll!7c816d4f()
kernel32.dll!7c8399f3()
Please Help me.