Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Speichern von Objekten?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2005, 16:50 Uhr
Spacelord
Hoffnungsloser Fall


Du speicherst ja auch nur die Zeiger und nicht die Zeichenketten die dahinter stehen.
Und warum sollte die MessageBox jemals etwas anderes als "test" ausgeben?
Wenn du auf deine geladenen Zeiger zugreifst wird das mit hoher Warscheinlichkeit ne AccessViolation geben.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: