Veröffentlicht 12. Dezember 200816 j Hallo, ich versuche hier nun schon seit fast 2 Stunden eine Datei zu speichern und wieder zu laden. Hier die Aufgabenstellung. Es werden daten(Schülerdaten) in eine Listbox übernommen. Diese soll jetz gespeichert und wieder geladen werden können. Das Speichern scheint zu funktionieren nur das Laden nicht so richtig. Die daten sind dann schon wieder in der Listbox, nur wenn ich bei dieser eine Zeile selektiere sollen die daten des Schüllers in den Editfelder wieder erscheinen. Und genau das klappt noch nicht, entweder ich bekomme da irgendwelche kommischen Zeichen oder es kommt gar nichts. Hier mal ein Screen und ein Auszug aus dem Quelltext zum Speichern und Öffnen: Hoff es kann mir jemand helfen //OEFFNEN void __fastcall TfrmMain::Oeffnen1Click(TObject *Sender) { FILE *fp; //Deklaration des Filepointers if(OpenDialog1->Execute()==true) { //Speichern der Daten in die Datei fp = fopen(OpenDialog1->FileName.c_str(), "rb"); fread(FTE2, sizeof(struct schueler), schueler_anz, fp); fclose(fp); ListBox1->Items->LoadFromFile(OpenDialog1->FileName); } } //--------------------------------------------------------------------------- //SPEICHERN void __fastcall TfrmMain::Speichernunter1Click(TObject *Sender) { FILE *fp; //Deklaration des Filepointers if(SaveDialog1->Execute()==true) { //Speichern der Daten in die Datei fp = fopen(SaveDialog1->FileName.c_str(), "wb"); fwrite(FTE2, sizeof(struct schueler), schueler_anz, fp); fclose(fp); ListBox1->Items->SaveToFile(SaveDialog1->FileName); } } //---------------------------------------------------------------------------
12. Dezember 200816 j Was für ein bizarrer Mischmasch aus C und C++ Wie sieht denn diese ominöse "struct schueler" aus? Nur POD-Typen darf man auf einen Rutsch mit fread oder fwrite verarbeiten.
12. Dezember 200816 j Bizarr?! Haben es so in der Schule gelernt. Hier nun die Struktur. #define schueler_anz 32 // Strukturdeklaration struct schueler { unsigned int Nr; char Name[20]; char Vorname[20]; char Strasse[20]; unsigned int Hausnummer; unsigned int PLZ; char Ort[20]; }; TfrmMain *frmMain; struct schueler FTE2[schueler_anz];
12. Dezember 200816 j Die Struktur ist soweit sicher. Allerdings machst du irgendwie alles doppelt. Du liest dein Struktur-Array aus der Datei, und dann liest du aus derselben Datei nochmal den Inhalt der Listbox. Und beim Speichern schreibst du erst dein Array in die Datei, und dann in dieselbe Datei den Inhalt der Listbox. Ich bin sicher, das ist so nicht gewollt.
12. Dezember 200816 j Bin mir auch nicht sicher ob das so richtig ist. Wir wird denn das normalerweise gemacht. Was müsst ich abändern??
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.