Fehlerdiagnose nötig

Modena

Lieutenant
Registriert
Okt. 2003
Beiträge
974
Hab hier ein Quelltext in c++, jedoch bekomme ich ihn halt nicht zum laufen. Vieleicht könnt ihr mit bitte helfen und findet den Fehler.

Code:
//---------------------------------------------------------------------------



#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <fstream>

#include <string>

#include <iomanip>

#include <stdlib.h>



//---------------------------------------------------------------------------



#pragma argsused

struct TKundensatz

{

        int Nummmer;

        char Name[20];

        float Umsatz;

};

TKundensatz Kundensatz;

void OeffneDatei(const string Dname, fstream& f, const ios::open_mode m)

{

        f.open(Dname.c_str(),m | ios::binary);

        if (!f)

        {

                cout<<"Programmabbruch: Fehler beim der Datei"<<Dname;

                exit(1);

        }

}

void OeffneDateiNeu(string& Dname, fstream& f)

{

        char taste;

        cout<<"Name der Datei (z.B. Kunden.dat): ";

        getline(cin,Dname,'\n');

        f.open(Dname.c_str(),ios::in|ios::binary);

        if(f)

        {

                f.close();

                do

                {

                        cout<<"Datei existiert schon, neu anlegen (j/n)? ";cin>>taste;

                        taste=toupper(taste);

                }

                while(taste!='J' && taste!='N');

                cin.ignore();

                if(taste='J')

                {

                        OeffneDatei(Dname,f,ios::out|ios::trunc);

                        f.close();

                }

        }

        else f.close();

}

void SchliesseDatei(const string& Dname,fstream& f)

{

        f.close();

        coust<<"Datei "<<Dname<<" geschlossen.\n";

}

void SatzAnzeigen(TKundensatz k)

{

        cout.precision(3);

        cout<<"Kundennummer:  "<<k.Nummer<<endl;

        cout<<"Name:          "<<k.Name<<endl;

        cout<<"Umsatz bisher: "<<k.Umsatz<<endl;

}

void Schreiben(string Dname, fstream& f)

{

        TKundensatz k;

        string NameStr;



        OeffneDatei(Dname,f,ios::out|ios::app);

        while(true)

        {

                cout<<"\nKundennummer (0=Ende): "; cin>>k.Nummer;

                cin.ignore();

                if(!k.Nummer break;

                cout<<"Name des Kunden: ";

                getline(cin,NameStr,'\n');

                strcpy(k.Name,NameStr.substr(0,19).c_str());

                cout<<"Umsatz in DM: "; cin>>k.Umsatz;

                f.write((char*)&k,sizeof(k));

        }

        f.close();

}

void Auflisten(const string& Dname, fstream& f)

{

        int SatzNr;

        TKundensatz k;



        OeffneDatei(Dname,f,ios::in);

        SatzNr=0;

        cout<<"\nSatznummer  Kundennummer  Name                 Umsatz\n";

        while(f.read((char*)&k,sizeof(k))

        {

                cout<<setw(6)<<SatzNr++<<":     "

                    <<setw(7)<<k.Nummer<<"      "<<setw(19);

                cout.sctf(ios::left,ios::adjustfield);

                cout<<k.Name<<"  "<<setw(8);

                cout.setf(ios::right,ios::adfustfield);

                cout<<k.Umsatz<<endl;

        }

        cin.ignore();

        f.close();

}

void Suchen(const string& Dname, fstream& f)

{

        string NameSuch;

        bool fund=false;

        TKundensatz k;



        OeffneDatei(Dname,f,ios::in);

        cin.ignore();

        cout<<"Kundenname als Suchbegriff: ";

        getline(cin,NameSuch,'\n');

        while(!fund&&f.read((char*)&k,sizeof(k)))

                if(NameSuch==k.Name) fund=true;

        if(fund)

        {

                SatzAnzeigen(k);

        }

        else

        {

                cout<<"Satz"<<NameSuch<<" nicht vorhanden.\n";

                NameSuch="0";

        }

        f.close();

}

void Aendern(const string& Dname, fstream& f)

{

        int SatzNr;

        TKundensatz k;

        string NameStr;



        OeffneDatei(Dname,f,ios::in|ios::out);

        cout<<"Satznummer(0,1,2,...): "; cin<<SatzNr;

        if(!f.seekp(SatzNr*siteof(k)))

        {

                cout<<"Datensatz Nr."<<SatzNr<<"existiert nicht\n";

                return;

        }

        f.read((char*)&k,sizeof(k));

        cout.precision(3);

        cout<<"Kundennummer bisher :   "<<k.Nummer<<" - neu: ";

        cin>>k.Nummer; cin.ignore();

        cout<<"Name des Kunden bisher: "<<k.Name<<  " - neu: ";

        getline(cin,NameStr,'\n');

        strcpy(k.Name,NameStr.substr(0,19).c_str());

        cout<<"Umsatz:          "<<k.Umsatz<<" - neu: ";

        cin>>k.Umsatz; cin.ignore();

        f.skeep(SatzNr*sizeof(k));

        if (f.write((char*)&k,sizeof(k)))

                cout<<"Satz wurde geaendert.\n";

        else

                cout<<"Satz konnte nicht geaendert werden.\n";

        f.close();

}

void  Menue(string& Dname, fstream& f)

{

        char Wahl;



        do

        {

                cout<<"\nZur Menueanzeige Return druecken! "; cin.get();

                cout<<"\n===================================================\n";

                cout<<"Datei in Bearbeitung: "<<DName<<endl;

                cout<<"0  Ende:         Programm beenden\n";

                cout<<"1  Schreiben:    Neue Datensaetze an Datei anhaengen\n";

                cout<<"2  Auflisten:    Alle Datensaetze seriell lesen\n";

                cout<<"3  Suchen:       Datensatz suchen und lesen\n";

                cout<<"4  Neu:          Neue Datei bearbeiten\n";

                cout<<"===================================================\n";

                cout<<"Bitte waehlen: "; Wahl=cin.get();

                cin.ignore();

                switch(Wahl)

                {

                        case '1': Schreiben(Dname,f); break;

                        case '2': Auflisten(Dname,f); break;

                        case '3': Suchen(Dname,f); break;

                        case '4': Aendern(Dname,f); break;

                        case '5': SchliesseDatei(Dname,f); break;

                }

        }

        while(Wahl!='0');

}

int main(int argc, char* argv[])

{

        Menue(Dnaem,f);

        return 0;

}

//---------------------------------------------------------------------------
 
ist eine string, hab die jetzt im bereich deklariert und den Schreibfehler korrigiert. Allerdings hat sich nichts geändert.
 
Ich habe jetzt zehn Minuten am Quellcode rumgebastelt und bekomme ihn immer noch nicht durch den Compiler (VS 2005).

Das Zeug ist voller Schreibfehler:
- Nummmer <--> Nummer
- Fehlende Klammern
- coust <--> cout
- ios::adfustfield <--> ios::adjustfield
- cin << anstelle cin >>
- und viele mehr :(

Was ist die vcl.h?
Was sollen die pragmas?

So bekommst du das Programm niemals durch :rolleyes:.
 
Zuletzt bearbeitet: (Eigenen Schreibfehler korrigiert ;))
Zurück
Oben