Zum Inhalt springen

Handsup18

Mitglieder
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

  1. Hallo, haben grad in der Schule mit der Vererbung angefangen. Nun hab ich die uns gestellte Aufgabe auch programmiert und bin mir sicher das dies so Funktioneiren muss. Nur bekomm ich beim Ausführen immer die Fehlermeldung "Typname erwartet". Kann sich mal jemand das Prog anschauen und evtl. einen Tipp geben was noch Falsch ist. In der Aufgabe musste man zuerst einen normalen Zähler Programmieren (TCounter) der vor- und rückwärts zählt. Das ist kein Problem, die Aufgabe hat Funktioneiert. Danach hat man eine Kindklasse anlegen müssen die den Zählwert BCD-codiert ausgibt. Hier hab ich nun das Problem mit der Meldung. hier der Inhalt der Counter.h... ------------------------------------------------ class TCounter { protected: int ZaehlWert ; public: void CountUp(); void CountDown(); void Reset(); int GetCounterValue(); TCounter(); }; ------------------------------------------------ Counter.cpp ------------------------------------------------ #include "Counter.h" //Deklaration Konstrukter TCounter::TCounter() { ZaehlWert=0; } void TCounter::CountUp() { ZaehlWert++; } void TCounter::CountDown() { ZaehlWert--; } void TCounter::Reset() { ZaehlWert = 0; } int TCounter::GetCounterValue() { return ZaehlWert; } ------------------------------------------------ und hier der von BCDCounter.h ------------------------------------------------ #include "math.h" class TBCDCounter : public TCounter { int Zahl; int buf[4]; public: TBCDCounter(); int GetBCDCounter(); }; ------------------------------------------------ BCDCounter.cpp ------------------------------------------------ #include "BCDCounter.h" #include "Counter.h" TBCDCounter::TBCDCounter() //: TCounter() { } int TBCDCounter::GetBCDCounter() { if (Zahl < 9) { return Zahl; } if (Zahl < 99) { int ex = 1; buf[0] = Zahl/pow(10,ex); buf[1] = Zahl - (buf[0]*pow(10, ex)); buf[0] = buf[0] << 4; return (buf[0] | buf[1]); } if (Zahl < 999) { int ex = 2; buf[0] = Zahl/pow(10, ex); buf[1] = (Zahl - (buf[0]*pow(10, ex)))/pow(10, ex-1); buf[2] = Zahl - (buf[0]*pow(10, ex)) - (buf[1]*pow(10, ex-1)); buf[0] = buf[0] << 8; buf[1] = buf[1] << 4; return ((buf[0] | buf[1]) | buf[2]); } if (Zahl < 9999) { int ex = 3; buf[0] = Zahl/pow(10, ex); buf[1] = (Zahl - (buf[0]*pow(10, ex)))/pow(10, ex-1); buf[2] = (Zahl - (buf[0]*pow(10, ex)) - (buf[1]*pow(10, ex-1))) / pow(10, ex-2) ; buf[3] = Zahl - (buf[0]*pow(10, ex)) - (buf[1]*pow(10, ex-1)) - (pow(10, ex-2)) ; buf[0] = buf[0] << 12; buf[1] = buf[1] << 8; buf[2] = buf[2] << 4; return ((buf[0] | buf[1]) | (buf[2] | buf[3])); } } ------------------------------------------------
  2. Hallo, haben grad in der Schule mit der Vererbung angefangen. Nun hab ich die uns gestellte Aufgabe auch programmiert und bin mir sicher das dies so Funktioneiren muss. Nur bekomm ich beim Ausführen immer die Fehlermeldung "Typname erwartet". Kann sich mal jemand das Prog anschauen und evtl. einen Tipp geben was noch Falsch ist. In der Aufgabe musste man zuerst einen normalen Zähler Programmieren (TCounter) der vor- und rückwärts zählt. Das ist kein Problem, die Aufgabe hat Funktioneiert. Danach hat man eine Kindklasse anlegen müssen die den Zählwert BCD-codiert ausgibt. Hier hab ich nun das Problem mit der Meldung. hier der Inhalt der Counter.h... ------------------------------------------------ class TCounter { protected: int ZaehlWert ; public: void CountUp(); void CountDown(); void Reset(); int GetCounterValue(); TCounter(); }; ------------------------------------------------ Counter.cpp ------------------------------------------------ #include "Counter.h" //Deklaration Konstrukter TCounter::TCounter() { ZaehlWert=0; } void TCounter::CountUp() { ZaehlWert++; } void TCounter::CountDown() { ZaehlWert--; } void TCounter::Reset() { ZaehlWert = 0; } int TCounter::GetCounterValue() { return ZaehlWert; } ------------------------------------------------ und hier der von BCDCounter.h ------------------------------------------------ #include "math.h" class TBCDCounter : public TCounter { int Zahl; int buf[4]; public: TBCDCounter(); int GetBCDCounter(); }; ------------------------------------------------ BCDCounter.cpp ------------------------------------------------ #include "BCDCounter.h" #include "Counter.h" TBCDCounter::TBCDCounter() //: TCounter() { } int TBCDCounter::GetBCDCounter() { if (Zahl < 9) { return Zahl; } if (Zahl < 99) { int ex = 1; buf[0] = Zahl/pow(10,ex); buf[1] = Zahl - (buf[0]*pow(10, ex)); buf[0] = buf[0] << 4; return (buf[0] | buf[1]); } if (Zahl < 999) { int ex = 2; buf[0] = Zahl/pow(10, ex); buf[1] = (Zahl - (buf[0]*pow(10, ex)))/pow(10, ex-1); buf[2] = Zahl - (buf[0]*pow(10, ex)) - (buf[1]*pow(10, ex-1)); buf[0] = buf[0] << 8; buf[1] = buf[1] << 4; return ((buf[0] | buf[1]) | buf[2]); } if (Zahl < 9999) { int ex = 3; buf[0] = Zahl/pow(10, ex); buf[1] = (Zahl - (buf[0]*pow(10, ex)))/pow(10, ex-1); buf[2] = (Zahl - (buf[0]*pow(10, ex)) - (buf[1]*pow(10, ex-1))) / pow(10, ex-2) ; buf[3] = Zahl - (buf[0]*pow(10, ex)) - (buf[1]*pow(10, ex-1)) - (pow(10, ex-2)) ; buf[0] = buf[0] << 12; buf[1] = buf[1] << 8; buf[2] = buf[2] << 4; return ((buf[0] | buf[1]) | (buf[2] | buf[3])); } } ------------------------------------------------
  3. Bin mir auch nicht sicher ob das so richtig ist. Wir wird denn das normalerweise gemacht. Was müsst ich abändern??
  4. 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];
  5. 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); } } //---------------------------------------------------------------------------

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...