Cstring opslaan en openen

Status
Niet open voor verdere reacties.

Articer

Gebruiker
Lid geworden
4 jan 2007
Berichten
12
hallo ik ben Arthur .. ik kan met me programma opslaan maar openen doet hij niet helemaal goed.. dit komt omdat hij 3 strings op 1 schrijft waardoor hij er 3 in 1 opent.
(m_Doos, m_Lijn enz.. zijn edit boxen) hoe kan ik dit oplossen misschien met char?

dit is opslaan :
Code:
void CArtScanView::OnSaveBtn() 
{
this->UpdateData();

	CFile f;

	

	char strFilter[] = { "TXT Files (*.txt)|*.txt|All Files (*.*)|*.*||" };

	CFileDialog FileDlg(FALSE, ".txt", NULL, 0, strFilter);

	if( FileDlg.DoModal() == IDOK )
	{
	f.Open(FileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
		CArchive ar(&f, CArchive::store);


		ar.WriteString(m_Doos);
		ar <<'\n';
		ar.WriteString(m_Lijn1);
		ar << ';';
		ar.WriteString(m_Lijn1_1);
		ar << ';';
		ar.WriteString(m_Lijn1_2);
		ar <<'\n';

hier schrijf hij dus Lijn1;Lijn1_1;Lijn1_2 aan elkaar.. 

de bedoeling is dat hij in text file achter elkaar staan dus '\n' heeft geen zin.

hier gaat hij het openen:

void CArtScanView::OnOpenBtn() 
{	

	this->UpdateData();

	CFile f;

	char strFilter[] = { "TXT Files (*.txt)|*.txt|All Files (*.*)|*.*||" };

	CFileDialog FileDlg(TRUE, ".txt", NULL, 0, strFilter);

	if( FileDlg.DoModal() == IDOK )
	{
		if( f.Open(FileDlg.GetFileName(), CFile::modeRead) == FALSE )
			return;
		CArchive ar(&f, CArchive::load);

		ar.ReadString(m_Doos);
		ar.ReadString(m_Lijn1);
		ar.ReadString(m_Lijn1_1);
		ar.ReadString(m_Lijn1_2);
Groeten,
Arthur van Beek
 
Laatst bewerkt door een moderator:
Pfff, je probleem omschrijven is ook een vak.

Als je gegevens op 1 regel wegschrijft zullen ze ook wee rop 1 regel ingelezen worden.
Als je nu gewoon in een 'hulp' string eerst die hele regel inleest dan kun je met de string zoek-functies uitvinden waar het scheidingsteken (die ; die je er tussen wegschrijft) staat. En vervolgens de 3 onderdelen uit de hulpstring naar de 3 losse strings kopieren.

Programmeren is een kwestie van logica zullen we maar zeggen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan