Hilfe bei ifstream - bcb6

wedhead

Mitglied
habe mich an einem quizz programm für die schule versucht, wobei ich die daten als STRUCT binär in eine datei schreibe, was auch perfekt funktioiert, nun hab ich leider wenig ahnung wie ich den STRUCT mit den einzelnen daten wieder einlesen kann, das soll später random geschehen, das ganze sollte mit ifstream funktionieren aber wie ?

vlt könnt ihr mir weiterhelfen

greez

weedy


Code:
//Globale Variablendeklaration
struct question{
    char  a[4][20],frage[100];
    int level;
    bool butt[4];
  }afrage;

void write() {

  //interne variablendeklaration
  int i;
  String einlesen;

  einlesen=Form1->RadioButton1->Caption;

  afrage.butt[0]=Form1->RadioButton1->Checked;
  afrage.butt[1]=Form1->RadioButton2->Checked;
  afrage.butt[2]=Form1->RadioButton3->Checked;
  afrage.butt[3]=Form1->RadioButton4->Checked;

  for (i=0;i<20;i++) afrage.a[0][i]=0;

  for (i=0;i<einlesen.Length();i++) afrage.a[0][i]=einlesen[i+1];
        einlesen=Form1->RadioButton2->Caption;

  for (i=0;i<20;i++) afrage.a[1][i]=0;

  for (i=0;i<einlesen.Length();i++) afrage.a[1][i]=einlesen[i+1];
        einlesen=Form1->RadioButton3->Caption;

  for (i=0;i<20;i++) afrage.a[2][i]=0;

  for (i=0;i<einlesen.Length();i++) afrage.a[2][i]=einlesen[i+1];
        einlesen=Form1->RadioButton4->Caption;

  for (i=0;i<20;i++) afrage.a[3][i]=0;

  for (i=0;i<einlesen.Length();i++) afrage.a[3][i]=einlesen[i+1];
        i=Form1->Memo1->GetTextLen();if (i>100) i=100;

  for (i=0;i<100;i++) afrage.frage[i]=0;
        Form1->Memo1->GetTextBuf((char*) &afrage.frage,i);

  afrage.level=StrToInt(Form1->Edit5->Text);

  char Datei[]="c:\\Test01.dat";
  i=afrage.level;

  if (afrage.level>9) Datei[7]=48+afrage.level / 10;
        Datei[8]=(char) (48+i -(i/10)*10);

  ofstream Ausgabe(Datei,ios::binary&&ios::app);
        if(!Ausgabe) ShowMessage("Datei konnte nicht geöffnet werden!");
        else {
                Ausgabe.write((char*)&afrage,sizeof(afrage));
                Ausgabe.close();
             }
  }
 
Zuletzt bearbeitet:
Mal so als Tipp:

Vielleicht hilft Dir einer wenn du nicht einer dermaßen grauenvoll formatierten
Quelltext präsentieren würdest.

Hast du noch nie was von Einrückung gehört ?
Und das man, wenn man lesbaren Quelltext schreibt, nur einen Befehl auf eine Ziele
legt ?

Also ehrlich wenn ich das sehe hab ich schon keine Lust mehr das lesen,
geschweige denn es zu verstehen.

Sorry
 
wedhead hat gesagt.:
jo sorry, aber der quelltext is von Hr. Dr. Ing. D. (mein Lehrer) *g*

Spielt garkeine Rolle von wem der ist, das tut sich keiner an, ich frage mich wie du versucht haben willst da durchzusteigen ?

Rücke das mal ein, dann kommste vermutlich auch selbst auf die Lösung, wenn nicht schreib das formatierte nochmal hier rein, dann helfen hier sicherlich mehrere Leute echt gerne.

Beispiele für gutes Einrücken findeste in fast jedem anderen Thread :)
 
Code:
void read() {

struct question2{
    char  a2[4][20],frage2[100];
    int level2;
    bool butt2[4];
  }afrage2;

int i;

afrage2.level2=StrToInt(Form1->Edit5->Text);

char Datei[]="c:\\Test01.dat";
  i=afrage2.level2;

  if (afrage2.level2>9) Datei[7]=48+afrage2.level2 / 10;
        Datei[8]=(char) (48+i -(i/10)*10);

fstream Eingabe(Datei,ios::binary|ios::in);
        if(!Eingabe) ShowMessage("Datei konnte nicht geöffnet werden!");
        else {
                Eingabe.seekg(0);
                Eingabe.read((char*)&afrage2,sizeof(afrage2));
                Eingabe.close();
             }

müsste er jetzt nicht den struct haben ?
oder was mach ich hier falsch ?
bzw wie muss ich es machen das er die daten aus der binärdatei in den struct einließt?
 
Zurück