000
16.09.2005, 16:10 Uhr
~Luzidius
Gast
|
Hallo forum,
ich schreibe aus indien, wo ich eine software zur erstellung von Stundenplaenen fuer ein Slumschule programmiere.
Dazu moechte ich objekte von der klasse Teacher in einer verketteten liste verwalten und die einzelnen ojekte binaer abspeichern.
Beispiel fuer die klasse Teacher:
C++: |
class Teacher { char* name Teacher* next }
|
Dann habe ich, um das schreiben und lesen auszuprobieren, zwei funktionen formuliert:
C++: |
Schreiben() { char* pszFileName = "c:\\test\\myfile.dat"; CFile myFile; CFileException fileException;
if ( !myFile.Open( pszFileName, CFile::modeCreate | CFile::modeReadWrite ), &fileException ) { TRACE( "Can't open file %s, error = %u\n", pszFileName, fileException.m_cause ); }
Teacher* teach= new Teacher teach->name="test";
myFile.Write( &teach, sizeof( class Teacher ) );
myFile.Close();
}
|
Naechste funktion zum lesen der daten:
C++: |
Lesen() {
char* pszFileName = "c:\\test\\myfile.dat"; CFile myFile; CFileException fileException; UINT nActual = 0; Teacher* temp;
if ( !myFile.Open( pszFileName, CFile::modeReadWrite ), &fileException ) { TRACE( "Can't open file %s, error = %u\n", pszFileName, fileException.m_cause ); }
myFile.SeekToBeginn();
nActual = myFile.Read( &temp, sizeof( class Teacher ) );
AfxMessageBox("test"); myFile.Close();
}
|
Wenn ich das programm starte und einen Teacher einlese, und danach, aber waehrend der selben laufzeit die funktion Lesen() aufrufe, wird die AfxMessageBox("test") angezeigt.
Schliese ich die anwendung, starte sie neu und rufe die lesen funktion auf zeigt die AfxMessageBox nichts mehr an; Als waere der name nur noch "". Die myFile.dat, ist aber immernoch beschrieben. Ich habe das selbe vorher mit fopen, fread, fwrite usw. versucht. Gab den selben fehler.
weis jemand woran das liegen koennnte, ich schmohre naehmlich aschon seit tagen auf diesem problem?
Bearbeitung von typecast: |
cpp-Tags gesetzt
|
Dieser Post wurde am 16.09.2005 um 17:15 Uhr von typecast editiert. |