007
20.05.2005, 00:20 Uhr
mmc20
puss in boots
|
also, auf dein projekt umgesetzt müsste es so aussehen...
C++: |
///////////////////////////////////////////////////////////////////////////// // Daten-Structs
struct TRunApp { CString sAppPath; CString sAppParam; };
struct TFiles { int iCopyDel; CString sFile; CString sFileDestination; };
struct TEnvVar { int iSysUserVar; CString sVarName; CString sVarValue; }; struct TService { CString sServiceName; int iStopDel; };
struct TLink { CString sName; CString sTargetDestination; CString sTargetFile; CString sHotKey; CString sDescription; int iWindStyle; };
///////////////////////////////////////////////////////////////////////////// // Daten-Klasse
class TJob : public CObject { DECLARE_SERIAL (TJob) public: TJob(); TJob::TJob (const TJob& cop); void Serialize(CArchive& ar); // hier die Datenelemente CString sJobName; int iJobID; TRunApp tRunApp; TFiles tFiles; TEnvVar tEnvVar; TService tService; TLink tLink; };
IMPLEMENT_SERIAL (TJob, CObject, 1)
TJob::TJob() // ctor { }
TJob::TJob (const TJob& cop) // kopier-ctor { this->iJobID = cop.iJobID; this->sJobName = cop.sJobName; this->tRunApp = cop.tRunApp; this->tFiles = cop.tFiles; this->tEnvVar = cop.tEnvVar; this->tService = cop.tService; this->tLink = cop.tLink; }
void TJob::Serialize(CArchive &ar) { CObject::Serialize( ar );
if ( ar.IsStoring() ) { ar << sJobName << iJobID; ar << tRunApp.sAppParam << tRunApp.sAppPath; ar << tFiles.iCopyDel << tFiles.sFile << tFiles.sFileDestination; ar << tEnvVar.iSysUserVar << tEnvVar.sVarName << tEnvVar.sVarValue; ar << tService.iStopDel << tService.sServiceName; ar << tLink.iWindStyle << tLink.sDescription << tLink.sHotKey << tLink.sName << tLink.sTargetDestination << tLink.sTargetFile; } else { ar >> sJobName >> iJobID; ar >> tRunApp.sAppParam >> tRunApp.sAppPath; ar >> tFiles.iCopyDel >> tFiles.sFile >> tFiles.sFileDestination; ar >> tEnvVar.iSysUserVar >> tEnvVar.sVarName >> tEnvVar.sVarValue; ar >> tService.iStopDel >> tService.sServiceName; ar >> tLink.iWindStyle >> tLink.sDescription >> tLink.sHotKey >> tLink.sName >> tLink.sTargetDestination >> tLink.sTargetFile; } }
|
und ein objekt der liste hinzufügen...
C++: |
// neues anlegen TJob* tmp = new TJob; // mit daten füllen tmp->tService.sServiceName = "test"; // und der "liste" hinzufügen try { m_Liste.Add( tmp ); } catch ( CMemoryException* perr ) { AfxMessageBox("LOL - Kein Speicher zur Verfügung.", MB_ICONSTOP | MB_OK); if ( tmp ) { delete tmp; tmp = NULL; } perr->Delete(); }
|
das war's schon. hier noch der code zum speichern (laden steht ja schon oben)
C++: |
CFile file; if ( file.Open( m_sFileName, CFile::modeCreate | CFile::modeWrite ) ) { CArchive ar( &file, CArchive::store ); // hier könnte man noch ne versionsnummer speichern, // muss natürlich beim laden auch als erstes gelsen werden... ar >> m_iVersion; ar << m_iVersion; m_Liste.Serialize( ar ); } else MessageBox( "Daten konnten (warum auch immer) nicht gespeichert werden.", " Datei speichern", MB_ICONERROR|MB_OK ); file.Close();
|
...fertig ! Dieser Post wurde am 20.05.2005 um 00:22 Uhr von mmc20 editiert. |