Hopelijk heb je hier wat aan, het betreft de functies saven en loaden die ik vorig jaar ff heb geschreven voor een school project. Ik schrijf hier elk object uit een vector apart weg en geef deze een ID waarmee deze makkelijker te laden is.

[c++]
void SaveLoad::Saven( char* filenaam, ProjectManager *pm, ActiviteitManager *am, TimerManager *tm )
{
DWORD dwBytesWritten;
bProject Proj;
bActiviteit Act;
bTimer Timer;
pmr = pm;
amr = am;
tmr = tm;
HANDLE hFileWrite = CreateFile( filenaam, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
for( int i = 0; i < pmr->ProjVector.size(); i++ )
{
strcpy( Proj.bNaam, pmr->findProjectByNr(i).getOmschrijving() );
strcpy( Proj.bNotitie, pmr->findProjectByNr(i).getNotitie() );
strcpy( Proj.bStatus, pmr->findProjectByNr(i).getStatus() );
Proj.bDeadline = pmr->findProjectByNr(i).getDeadline().getTijd();
Proj.bTotalTime = pmr->findProjectByNr(i).getTotaleTijd().getTijd();
WriteFile(hFileWrite, &PROJECT_ID, sizeof( PROJECT_ID ), &dwBytesWritten, NULL );
WriteFile(hFileWrite, &Proj , sizeof( bProject ), &dwBytesWritten, NULL );
}
/*
for( int i = 0; i < am.ActVector.size(); i++ )
{
strcpy( Act.bNaam, pmr.findProjectByNr(i).getOmschrijving() );
strcpy( Act.bNotitie, pmr.findProjectByNr(i).getNotitie() );
strcpy( Act.bStatus, pmr.findProjectByNr(i).getStatus() );
Proj.bDeadline = pmr.findProjectByNr(i).getDeadline().getTijd();
Proj.bTotalTime = pmr.findProjectByNr(i).getTotaleTijd().getTijd();
WriteFile(hFileWrite, &ACTIVITEIT_ID, sizeof( ACTIVITEIT_ID ), &dwBytesWritten, NULL );
WriteFile(hFileWrite, &Proj , sizeof( bProject ), &dwBytesWritten, NULL );
}
for( int i = 0; i < tm.TimeVector.size(); i++ )
{
strcpy( Proj.bNaam, pmr.findProjectByNr(i).getOmschrijving() );
strcpy( Proj.bNotitie, pmr.findProjectByNr(i).getNotitie() );
strcpy( Proj.bStatus, pmr.findProjectByNr(i).getStatus() );
Proj.bDeadline = pmr.findProjectByNr(i).getDeadline().getTijd();
Proj.bTotalTime = pmr.findProjectByNr(i).getTotaleTijd().getTijd();
WriteFile(hFileWrite, &TIMER_ID, sizeof( TIMER_ID ), &dwBytesWritten, NULL );
WriteFile(hFileWrite, &Proj , sizeof( bProject ), &dwBytesWritten, NULL );
}
*/
CloseHandle( hFileWrite );
}
void SaveLoad::Loaden( char* filenaam, ProjectManager *pm, ActiviteitManager *am, TimerManager *tm )
{
bProject Proj;
bActiviteit Act;
bTimer Timer;
Project np;
Activiteit na;
//Timer nt;
pmr = pm;
DWORD dwBytesRead;
HANDLE hFileRead = CreateFile( filenaam, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
ReadFile( hFileRead, &read_id, sizeof(PROJECT_ID), &dwBytesRead, NULL);
while( dwBytesRead != 0 )
{
switch( read_id )
{
case PROJECT_ID:
ReadFile( hFileRead, &Proj, sizeof( bProject ), &dwBytesRead, NULL);
np.setOmschrijving( Proj.bNaam );
np.setNotitie( Proj.bNotitie );
np.setStatus( Proj.bStatus );
np.setTotaleTijd( Proj.bTotalTime );
np.setDeadline( Proj.bDeadline );
pmr->addProject( np );
break;
/*
case ACTIVITEIT_ID:
ReadFile( hFileRead, &Act, sizeof( bActiviteit ), &dwBytesRead, NULL );
//amr.addActiviteit(
//am = pm.FindProject( PS.Omschrijving ) ->GetActiviteiten();
break;
case TIMER_ID:
break;*/
default:
break;
}
ReadFile( hFileRead, &read_id, sizeof(PROJECT_ID), &dwBytesRead, NULL);
}
CloseHandle( hFileRead );
}
[/c++]