Datei Lesen



  • Hallo Zusammen

    ich hätte mal ne frage zu meim Quelltextauszug. Und zwar will ich aus der Datei quiz.dat mehrere Fragen und Antworten auslesen. Mit Borland 3 hat das wunderbar mit unten stehendem Code funktioniert. Daheim hab ich Borland 6 und da liest er keine Daten mehr ein. Hab auch schon im Forum gesucht aber leider keine antwort gefunden.
    Im voraus vielen dank...

    struct quiz
     {
       public :
         char Frage[450];
         char L1[150];
         char L2[150];
         char L3[150];
         char L4[150];
         int L;
    
       public :
         int Punkte;
       };
    
          int i = 0;
    
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    quiz qu[50];
    
         fstream file ;
    
         file.open("C:\\quiz.dat", ios::app );
    
         int x=0;
          while  (x<3){
    
            file.read ( (char*)&qu[x], sizeof(qu[x]) ); x++;
            }
    
            Edit1->Text= qu[1].Frage;
            Form1->Label2->Caption = qu[x].L1;
            Form1->Label3->Caption = qu[x].L2;
            Form1->Label4->Caption = qu[x].L3;
            Form1->Label5->Caption = qu[x].L4;
            Edit6->Text = i;
            if (i!=0){
    
            int a = Edit5->Text.ToInt();
    
            if (a == qu[i-1].L)
            {
              Form3->Show();
            }
            else Form4->Show();
            }
            i = i+1;
    
            if (i==4){
            //i=0;
            Form5->Show();
            Form1->Hide();
            Form2->Hide();
            Form3->Hide();
            Form4->Hide();
    
            }
    
            Form2->Hide();
            int c = Edit4->Text.ToInt();
    Form3->Edit1->Text = c;
    Form5->Edit1->Text = c;
    
    }
    


  • Schon mal mit dem Debugger den logischen Ablauf überprüft?

    -junix



  • also wie gesagt das problem ist das mit Borland 3 alles läuft nur mit borland 6 nicht!!
    und ich hab kein plan warum nicht!



  • Edit1->Text= qu[i].Frage; 
            Form1->Label2->Caption = qu[i].L1; 
            Form1->Label3->Caption = qu[i].L2; 
            Form1->Label4->Caption = qu[i].L3; 
            Form1->Label5->Caption = qu[i].L4;
    

    anstatt x soll es natürlich i heißen!



  • Benutz doch lieber ne TStringList. Dann kannst du sofort mit den AnsiString-Methoden arbeiten.



  • naja aber es ging ja alles!! warum geht es mit ner neueren Version nicht mehr?



  • "Geht nicht" und auch "liest keine Daten mehr ein" sind keine wirklich aussagekräftigen Problembeschreibungen.



  • ok dann versuch ich es mal besser zu beschreiben.

    also ich habe mit borland3 die oben stehenden zeilen geschrieben. damit soll eine quiz.dat ausgelesen werden und auf knopfdruck angezeigt werden. soweit hat alles funktioniert. mit borland 6 funktioniert das ganze auch noch nur das er sich die daten aus der dat datei nicht holt und somit nur eine leere anzeige erscheint.

    das ganze gibt es auch als dosanwendung, da geht es wenn ich die fertige anwendung starte. nehm ich aber den quellcode und compilier es mit borland 6 neu holt er sich keine daten mehr!!

    so hoffe ich konnte mein problem deutlicher beschreiben.

    dankeschön



  • Vielleicht solltest du statt char* lieber einen string zuweisen.

    Edit1->Text = AnsiString(qu[i].Frage); 
    Form1->Label2->Caption = AnsiString(qu[i].L1); 
    Form1->Label3->Caption = AnsiString(qu[i].L2); 
    Form1->Label4->Caption = AnsiString(qu[i].L3); 
    Form1->Label5->Caption = AnsiString(qu[i].L4);
    


  • hi

    also das mit dem AnsiString funktioniert leider auch nicht. Ich denke das er sich erst gar nichts in die Arrays läd!! bin aber noch nicht so lange bei c++ daher vermute ich das nur

    MfG


  • Mod

    Hallo

    da kann man nur sehr dringend den Gebrauch des Debuggers anraten 😡
    hast du schon mit dem Debugger geschaut ob er an die gewuenschte Stelle hinkommt 😕

    MfG
    Klaus



  • ok läuft durch, aber hat halt keine daten drin.

    wenn ich den array qu[50] auf qu[5] setze, dann bekomm ich daten aber halt keine vernünftigen sondern nur sonderzeichen und so!!
    naja ich werd dann wohl mal borland 3 suchen gehn. 😉



  • Sonst machs doch so hier:

    struct quiz
     {
       public :
         String Frage;
         String L1;
         String L2;
         String L3;
         String L4;
         int L;
         int Punkte;
       };
    
          int i = 0;
    
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    quiz qu[50];
    TStringList* slListe;
    slListe->LoadFromFile("quiz.dat");
    
         int x=0;
          while  (x<15){
          qu[x].Frage=slListe->Strings[x];
          qu[x].L1=slListe->Strings[x+1];
          qu[x].L2=slListe->Strings[x+2];
          qu[x].L3=slListe->Strings[x+3];
          qu[x].L4=slListe->Strings[x+4];
          x+=5;
            }
    
            Edit1->Text= qu[i].Frage;
            Form1->Label2->Caption = qu[i].L1;
            Form1->Label3->Caption = qu[i].L2;
            Form1->Label4->Caption = qu[i].L3;
            Form1->Label5->Caption = qu[i].L4;
            Edit6->Text = i;
            if (i!=0){
    
            int a = Edit5->Text.ToInt();
    
            if (a == qu[i-1].L)
            {
              Form3->Show();
            }
            else Form4->Show();
            }
            i = i+1;
    
            if (i==4){
            //i=0;
            Form5->Show();
            Form1->Hide();
            Form2->Hide();
            Form3->Hide();
            Form4->Hide();
    
            }
    
            Form2->Hide();
            int c = Edit4->Text.ToInt();
    Form3->Edit1->Text = c;
    Form5->Edit1->Text = c;
    
    }
    

    [/quote]



  • Vielleicht erklärst du auch noch was du weshalb und wie geändert hast, damit er acuh weiss, was an deinem Listing besser sein sollte?

    Listings dokumentiert man für gewöhnlich, bevor man sie als Lösung bereitstellt

    -junix


Anmelden zum Antworten