/core.cpp
http://abicalc.googlecode.com/ · C++ · 1049 lines · 904 code · 104 blank · 41 comment · 292 complexity · 4345aa11182cd6a8d2a8c43f94dcb4d5 MD5 · raw file
- //---------------------------------------------------------------------------
-
-
- #pragma hdrstop
-
- #include "core.h"
-
- //---------------------------------------------------------------------------
- bool Core::addKurs(Kurs *kurs){
- if(this->cKurse>20 || kurs == NULL){
- return false;
- }
- if(kurs->isLK()){
- if(this->cLK >= 2){
- return false;
- }
- this->lk[this->cLK] = kurs;
- this->cLK++;
- return true;
- }
- this->kurse[this->cKurse] = kurs;
- this->cKurse++;
- return true;
- }
-
- Kurs* Core::getKursByName(String name){
- if(this->lk[0] != NULL && this->lk[0]->getName() == name)
- return this->lk[0];
- if(this->lk[1] != NULL && this->lk[1]->getName() == name)
- return this->lk[1];
-
- for(int i =0; i<this->cKurse; i++){
- if(this->kurse[i] != NULL){
- if(this->kurse[i]->getName() == name){
- return this->kurse[i];
- }
- }
- }
-
- return NULL;
- }
-
- void Core::clearKurse(){
- for (int i = 0; i < this->cKurse; i++) {
- this->kurse[i] = NULL;
- }
- this->cKurse = 0;
- for (int i=0; i< this->cLK; i++) {
- this->lk[i] = NULL;
- }
- this->cLK =0;
- }
-
- Kurs* Core::getLKByPosition(int pos){
- if(pos == 1 || pos == 2)
- return this->lk[pos-1];
- else
- return NULL;
- }
-
- Kurs* Core::getFS(){
- Kurs *tmp = this->getKursByName("Frz A");
- if(tmp != NULL){
- return tmp;
- }
- tmp = this->getKursByName("Frz B");
- if(tmp != NULL){
- return tmp;
- }
- tmp = this->getKursByName("Ru A");
- if(tmp != NULL){
- return tmp;
- }
- tmp = this->getKursByName("Ru B");
- if(tmp != NULL){
- return tmp;
- }
-
- return NULL;
- }
-
- int Core::anzahlKurs(){
- return this->cKurse+ this->cLK;
- }
-
- double Core::getAverageByYear(int year){
- if(year>4 || year < 1){
- return -1;
- }
- int count =0;
- double ret =0;
- for(int i =0; i<this->anzahlKurs(); i++){
- Kurs *tmp = this->iterateKurse(i);
- if(tmp->getNote(year) != -1 && tmp->getNote(year) != -2){
- ret += tmp->getNote(year);
- count++;
- }
-
- }
- if(count != 0){
- return ret/count;
- }
- return -1 ;
- }
-
-
- /*void Core::orderKurse(){
- Kurs *tmp[20];
- tmp[0] = this->getLKByPosition(1);
- tmp[1] = this->getLKByPosition(2);
- for(int i = 0; i<this->cKurse; i++){
- Kurs* sTmp = this->kurse[i];
- if(sTmp != NULL && !sTmp->isLK()){
- tmp[2+i] = sTmp;
- }
- }
- for(int i =0; i<20; i++){
- this->kurse[i] = tmp[i];
- }
-
- } */
-
- Kurs *Core::iterateKurse(int index){
- if(index < 2){
- return this->lk[index];
- }
- if(this->cKurse < index-2){
- return NULL;
- }
- return this->kurse[index-2];
- }
- void Core::setPruefungen(Pruefungen * p){
- this->pruefungen = p;
- }
-
- Pruefungen * Core::getPruefungen(){
- return this->pruefungen;
- }
-
- void Core::clearPruefungen(){
- this->pruefungen = NULL;
- }
-
-
- void Core::setAbgHalbjahre(int wert){
- if(wert<=5 && wert>= 0){
- this->kurse_abg = wert;
- }
- }
- int Core::getAbgHalbjahre(){
- return this->kurse_abg;
- }
-
- int Core::getBlockPunkte(int block){
- if(block == 1){
- //(Summe Kurshalbjahre)/(Anzahl Kurshalbjahresergebnisse)*40= BLOCK I
- int summe = 0;
- int summeLK = 0;
- int hj = 0;
-
- if(this->lk[0] != NULL){
- int note = this->lk[0]->getNote(1);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- note = this->lk[0]->getNote(2);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- note = this->lk[0]->getNote(3);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- note = this->lk[0]->getNote(4);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- }
- //LK 2
- if(this->lk[1] != NULL){
- int note = this->lk[1]->getNote(1);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- note = this->lk[1]->getNote(2);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- note = this->lk[1]->getNote(3);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- note = this->lk[1]->getNote(4);
- if(!(note == -1 || note == -2)){
- summeLK += note;
- hj += 2;
- }
- }
- summe += summeLK*2;
-
- for(int i = 0; i< this->cKurse; i++){
- int note1, note2, note3, note4;
- if(this->kurse[i] != NULL){
- note1 = this->kurse[i]->getNote(1);
- note2 = this->kurse[i]->getNote(2);
- note3 = this->kurse[i]->getNote(3);
- note4 = this->kurse[i]->getNote(4);
- if(note1 != -1 && note1 != -2){
- summe += note1;
- hj++;
- }
- if(note2 != -1 && note2 != -2){
- summe += note2;
- hj++;
- }
- if(note3!= -1 && note3 != -2){
- summe += note3;
- hj++;
- }
- if(note4 != -1 && note4 != -2){
- summe += note4;
- hj++;
- }
- }
- }
- if(hj != 0){
- float fSumme = (float)summe;
- float fHj = (float)hj;
- float t = fSumme/fHj*40.0;
- String ret = FormatFloat("##", t);
- return ret.ToInt();
- }else{
- return 0;
- }
-
- }else if(block == 2){
- //(Prüfung1+Pr2+Pr3+Pr4+Pr5)*4= BlockII
- int summe =0;
- for(int i =1; i<6; i++){
- if(this->pruefungen != NULL){
- if(this->pruefungen->get(i) != NULL){
- summe += this->pruefungen->get(i)->getNoteGes();
- }
- }
- }
- return summe*4;
- }else{
- return 0;
- }
- }
-
- void Core::saveToFile(String path)
- {
- TStringList *file = new TStringList();
- //Legacy: abgeschlossene Halbjahre hinzufügen
- file->Add("0");
- file->Add("//Pruefungen");
- if(this->getPruefungen() != NULL){
- for(int i = 0; i<5; i++){
- Kurse_Pruefung *tmp = this->getPruefungen()->get(i+1);
- if(tmp != NULL){
- String bell = "0";
- if(tmp->isBell()){
- bell = "1";
- }
- file->Add("P#"+tmp->getName()+"#"+IntToStr(tmp->getNote())+"#"+IntToStr(tmp->getNachpruefungNote())+"#"+bell+"#");
- }else{
- //Prüfung[i] nicht vorhanden
- file->Add("P#NULL#-1#-1#0#");
- }
- }
- }else{
- //Keine Prüfungen vorhanden
- file->Add("P#NULL#-1#-1#0#");
- file->Add("P#NULL#-1#-1#0#");
- file->Add("P#NULL#-1#-1#0#");
- file->Add("P#NULL#-1#-1#0#");
- file->Add("P#NULL#-1#-1#0#");
- }
-
- file->Add("//Kurse");
- for(int i = 0; i<this->anzahlKurs(); i++){
- Kurs *tmp = this->iterateKurse(i);
- if(tmp != NULL){
- String kursart = "0";
- String abgewaehlt = "0";
- if(tmp->isLK()){
- kursart = "1";
- }
- if(tmp->isAbg()){
- abgewaehlt = "1";
- }
- file->Add("k#"+tmp->getName()+"#"+IntToStr(tmp->getNote(1))+"#"+IntToStr(tmp->getNote(2))+"#"+IntToStr(tmp->getNote(3))+"#"+IntToStr(tmp->getNote(4))+"#"+kursart+"#"+abgewaehlt+"#");
- }else{
- //Kurs[i] nicht vorhanden
- }
- }
- file->SaveToFile(path);
- }
-
- void Core::loadFromFile(String path)
- {
- int i,h,j;
- char *t;
- TStringList *ergebnis = new TStringList();
- char buffer[6];
- String p;
- String k;
- //TStrings TStg2;
- TStrings *Fach;
- TStringList *TStg1 = new TStringList();
-
- TStg1->LoadFromFile(path);
- if(TStg1->Capacity<9)
- {
- Application->MessageBoxA(L"Datei unvollständig",L"Fehler",MB_OK);
- }else{
- this->pruefungen = new Pruefungen();
- for(int i = 2; i<7; i++){
- Kurse_Pruefung *tmp;
- String name;
- int countPos = 0; //Position im String (Ob Name, Note, etc)
- j = 0; //Zähler des Buffers
- t = TStg1->Strings[i].c_str();
- for(int k =0; k<TStg1->Strings[i].Length();k++){
- if(t[k] != 'P' && t[k] != '#'){
- buffer[j] = t[k];
- buffer[j+1] = '\0';
- j++;
- }else{
- if(t[k] != 'P' && j!= 0){
- switch(countPos){
- case 0: //Name
- name = buffer;
- if(name != "NULL"){
- tmp = new Kurse_Pruefung(name);
- }else{
- tmp = NULL;
- }
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPos++;
- j = 0;
- break;
- case 1: // Note 1 Prüfung
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPos++;
- j = 0;
- tmp->setNote(note.ToInt());
- }
- break;
- case 2:
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPos++;
- j = 0;
- int inote = note.ToInt();
- if(inote > -2){
- tmp->setNachpruefung(true);
- }
- tmp->setNachpruefungNote(inote);
- }
- break;
- case 3:
- if(tmp != NULL){
- String bell = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPos++;
- j = 0;
- if(bell.ToInt() == 1){
- tmp->setBell(true);
- }
-
- this->getPruefungen()->add(tmp, i-1);
- } else{
- this->getPruefungen()->add(NULL, i-1);
- }
- break;
- }
- }
- }
- t = TStg1->Strings[i].c_str();
- }
-
- }
-
-
- //Kurse
- // z=0;
- int lks = 0;
- Kurs *tmp;
- for (i = 8; i < TStg1->Count; i++) {
- int countPosition = 0;
- j = 0;
- p=TStg1->Strings[i];
- t=p.c_str();
- for (h = 0; h < p.Length(); h++) {
- if (t[h] != '#'&& t[h] != 'k') {
- buffer[j]=t[h];
- buffer[j+1] = '\0';
- j++;
- }else{
- if(t[h] != 'k' && j != 0){
- switch(countPosition){
- case 0:
- tmp = new Kurs(buffer, false);
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- break;
- case 1:
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- tmp->setNote(note.ToInt(), 1);
- }
- break;
- case 2:
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- tmp->setNote(note.ToInt(), 2);
- }
- break;
- case 3:
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- tmp->setNote(note.ToInt(), 3);
- }
- break;
- case 4:
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- tmp->setNote(note.ToInt(), 4);
- }
- break;
- case 5:
- if(tmp != NULL){
- String art = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- if(art.ToInt() == 1){
- tmp->setLK(true);
- }else if(art.ToInt() == 0){
- tmp->setLK(false);
- }
- }
- break;
- case 6:
- if(tmp != NULL){
- String art = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- countPosition++;
- j = 0;
- if(art.ToInt() == 1){
- tmp->setAbg(true);
- }else if(art.ToInt() == 0){
- tmp->setAbg(false);
- }
- }
- break;
-
-
- }
- }
-
- }
- if(countPosition > 6){
- this->addKurs(tmp);
-
- countPosition =0;
- }
- }
- }
- }
- }
-
- int Core::getUnterkurse(){
- this->unterkurse = 0;
- for(int i =0; i<this->anzahlKurs(); i++){
- if(this->iterateKurse(i) != NULL){
- if(this->iterateKurse(i)->getNote(1) <5 && this->iterateKurse(i)->getNote(1) != -1 && this->iterateKurse(i)->getNote(1) != -2){
- if(this->iterateKurse(i)->isLK()){
- this->unterkurse++;
- }
- this->unterkurse++;
- }
- if(this->iterateKurse(i)->getNote(2) <5 && this->iterateKurse(i)->getNote(2) != -1 && this->iterateKurse(i)->getNote(2) != -2){
- if(this->iterateKurse(i)->isLK()){
- this->unterkurse++;
- }
- this->unterkurse++;
- }
- if(this->iterateKurse(i)->getNote(3) <5 && this->iterateKurse(i)->getNote(3) != -1 && this->iterateKurse(i)->getNote(3) != -2){
- if(this->iterateKurse(i)->isLK()){
- this->unterkurse++;
- }
- this->unterkurse++ ;
- }
- if(this->iterateKurse(i)->getNote(4) <5 && this->iterateKurse(i)->getNote(4) != -1 && this->iterateKurse(i)->getNote(4) != -2){
- if(this->iterateKurse(i)->isLK()){
- this->unterkurse++;
- }
- this->unterkurse++;
- }
- }
- }
- return this->unterkurse;
- }
-
- void Core::print(String name){
- int cm = 118;
- int t =0;
-
- TPrinter *print = Printer();
- print->BeginDoc();
- TCanvas *seite = print->Canvas;
- seite->Font->Name = "fnArial";
- seite->Brush->Style = bsClear;
-
- seite->Font->Size = 18;
- String headline = "Noten für "+name;
- seite->TextOutA(3*cm, 1*cm, headline);
-
- seite->Font->Size = 14;
- seite->TextOutA(3*cm, 2.5*cm, "Kursnoten");
-
-
- //Kursnoten
- seite->Font->Size = 12;
- seite->TextOutA(3*cm, 4*cm, "Fach");
- seite->TextOutA(5.5*cm, 4*cm, "12.1");
- seite->TextOutA(7.5*cm, 4*cm, "12.2");
- seite->TextOutA(9.5*cm, 4*cm, "13.1");
- seite->TextOutA(11.5*cm, 4*cm, "13.2");
- for(int i =0; i<this->anzahlKurs(); i++){
- seite->TextOutA(3*cm, (5+i)*cm, this->iterateKurse(i)->getName());
-
- String n121;
- if(this->iterateKurse(i)->getNote(1) <0){
- n121 = " - " ;
- }else {
- n121 = FormatFloat("00", this->iterateKurse(i)->getNote(1));
-
- }
- String n122;
- if(this->iterateKurse(i)->getNote(2) <0){
- n122 = " - " ;
- }else {
- n122 = FormatFloat("00",this->iterateKurse(i)->getNote(2));
- }
- String n131;
- if(this->iterateKurse(i)->getNote(3) <0){
- n131 = " - " ;
- }else {
- n131 = FormatFloat("00",this->iterateKurse(i)->getNote(3));
- }
- String n132;
- if(this->iterateKurse(i)->getNote(4) <0){
- n132 = " - " ;
- }else {
- n132 = FormatFloat("00",this->iterateKurse(i)->getNote(4));
- }
- seite->TextOutA(5.5*cm, (5+i)*cm, n121);
- seite->TextOutA(7.5*cm, (5+i)*cm, n122);
- seite->TextOutA(9.5*cm, (5+i)*cm, n131);
- seite->TextOutA(11.5*cm, (5+i)*cm, n132);
- t++; //Zähler für später erhöhen
- }
-
- //Prüfungsnoten
- seite->Font->Size = 14;
- seite->TextOutA(3*cm, (5.5+t)*cm, "Prüfungsnoten");
-
- seite->Font->Size = 12;
- seite->TextOutA(3*cm, (7+t)*cm, "Fach");
- seite->TextOutA(5.5*cm, (7+t)*cm, "Prüfung 1");
- seite->TextOutA(9.5*cm, (7+t)*cm, "Prüfung 2");
- seite->TextOutA(15.5*cm, (7+t)*cm, "Gesamt");
- for(int i=1; i<6; i++){
- seite->TextOutA(3*cm, (8+t)*cm, this->getPruefungen()->get(i)->getName());
- // int t = this->getPruefungen()->get(i)->getNote();
- if(this->getPruefungen()->get(i)->getNote()>-1){
- seite->TextOutA(5.5*cm, (8+t)*cm, FormatFloat("00",this->getPruefungen()->get(i)->getNote()));
- }else{
- seite->TextOutA(5.5*cm, (8+t)*cm, " - " );
- }
-
-
-
- if(this->getPruefungen()->get(i)->hasNachpruefung()){
- int note =this->getPruefungen()->get(i)->getNachpruefungNote();
- if(this->getPruefungen()->get(i)->getNachpruefungNote() >=0){
- seite->TextOutA(9.5*cm, (8+t)*cm, FormatFloat("00",this->getPruefungen()->get(i)->getNachpruefungNote()));
- }else{
- seite->TextOutA(9.5*cm, (8+t)*cm, " - " );
- }
-
- }else{
- seite->TextOutA(9.5*cm, (8+t)*cm, " - " );
- }
- int note = this->getPruefungen()->get(i)->getNoteGes() ;
- seite->TextOutA(15.5*cm, (8+t)*cm, FormatFloat("00",note));
-
- t++;
- }
-
- //Auswertung
- seite->Font->Size = 14;
- seite->TextOutA(3*cm, (10+t)*cm, "Auswertung");
-
- seite->Font->Size = 12;
- seite->TextOutA(3*cm, (11.5+t)*cm, "Qualifikationsphase:");
- seite->TextOutA(12*cm, (11.5+t)*cm, IntToStr(this->getBlockPunkte(1)));
-
- seite->TextOutA(3*cm, (12.5+t)*cm, "Prüfungsphase:");
- seite->TextOutA(12*cm, (12.5+t)*cm, IntToStr(this->getBlockPunkte(2)));
-
- double pGes = this->getBlockPunkte(1)+this->getBlockPunkte(2);
- double n = (17.0/3.0)-(pGes/180.0) ;
- n = (n<1)? 1.00 : n;
- String note = n;
- //FormatFloat("0.0", t); (t <1) ? 1.0: t;
- note = note.SubString(1,3);
-
- seite->TextOutA(3*cm, (15+t)*cm, "Gesamtpunkte:");
- seite->TextOutA(10*cm, (15+t)*cm, FloatToStr(pGes));
-
- seite->TextOutA(3*cm, (16+t)*cm, "Abiturnote:");
- seite->TextOutA(10*cm, (16+t)*cm, note);
-
-
- seite->Font->Size = 8;
- seite->Font->Style = TFontStyles() << fsItalic;
- seite->TextOutA(3*cm, (18+t)*cm, "generiert mit AbiCalc - http://redmine.vadaru.com/projects/abicalc");
- print->EndDoc();
-
-
- }
-
- int Core::countNaturwissenschaften(){
- int c =0;
- for (int i = 0; i < this->anzahlKurs(); i++) {
- if(this->iterateKurse(i) != NULL){
- if(this->iterateKurse(i)->getName() == "Ch"){
- c++ ;
- }
- if(this->iterateKurse(i)->getName() == "Phy"){
- c++ ;
- }
- if(this->iterateKurse(i)->getName() == "Bio"){
- c++ ;
- }
- }
- }
- return c;
- }
-
- int Core::getPositionOfKursByName(String name){
- for(int i =0; i<this->cKurse; i++){
- if(this->kurse[i] != NULL){
- if(this->kurse[i]->getName() == name){
- return i;
- }
- }
- }
- return -1;
- }
-
- Kurs *Core::getKursByPosition(int pos){
- if(0<=pos <20){
- return this->kurse[pos];
- }
- return NULL;
- }
- void Core::setKursInPosition(Kurs* kurs,int pos){
- if(0 <= pos < 20){
- this->kurse[pos] = kurs;
- }
- }
- void Core::setLKInPosition(Kurs* kurs,int pos){
- if(kurs->isLK()){
- if(this->lk[pos-1] == NULL){
- this->cLK++;
- }
- if(0<pos<3){
- this->lk[pos-1] = kurs;
- }
- }
- }
- void Core::deleteKursOnPosition(int pos){
- if(0<=pos<20){
- Kurs *tmp;
- for(int i = pos; i<this->cKurse; i++){
- if((i+1)<this->cKurse){
- this->kurse[i] = this->kurse[i+1];
- }else{
- this->kurse[i] = NULL;
- }
- }
- this->cKurse--;
- }
- }
-
- Core::Core(){
- this->isChanged = false;
- this->cKurse =0; //init - keine Kurse im Array
- this->cLK = 0;
- this->kurse_abg = 0;
- this->pruefungen = NULL;
- this->savePath = "";
- }
- Core::~Core(){}
-
-
-
-
- void Core::parseFile(String path){
- TStringList *file = new TStringList();
-
- file->LoadFromFile(path);
-
- bool error = true; //ist ein fehler aufgetreten?
- bool isKurse = false; // //Kurse ist aufgetaucht
- int cIsKurse =0; // Zeile an dem cIsKurse true wurde
- int countPruefungen =0;
-
- Kurse_Pruefung *tmp[5];
- this->pruefungen = new Pruefungen();
-
- for(int i =1; i<file->Count;i++){
- char*line = file->Strings[i].c_str(); //Eine Zeile aus der Datei
-
-
- /**
- * Prüfungen
- **/
- if(i == 1 && file->Strings[i].Compare("//Pruefungen") == 0){
- error = false;
- }
-
- if(i>1 && i<7 && !error){ //Prüfungsfächer
- char buffer[6];
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren */
-
-
-
- int countBuffer =0;
- int countPosition =0;
-
-
- for(int j =1; j<file->Strings[i].Length(); j++){
- if(line[j] != '#' && !error){
- buffer[countBuffer] = line[j];
- countBuffer++;
- }else{
- /*if(countBuffer >= 5 || line[j] == '#' && countPosition < 6 /*&& countBuffer > 1){*/
- if(countBuffer != 0){
- switch(countPosition){
- case 0: //Name
- tmp[countPruefungen] = new Kurse_Pruefung(buffer);
- if(tmp[countPruefungen]->getName() == "BELL"){
- tmp[countPruefungen]->setBell(true);
- }
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
- break;
- case 1:
- if(tmp[countPruefungen] != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- tmp[countPruefungen]->setNote(note.ToInt());
- }
- break;
- case 2:
- if(tmp[countPruefungen] != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- if(note.ToInt() == -1){
- tmp[countPruefungen]->setNachpruefung(false);
- }else{
- tmp[countPruefungen]->setNachpruefung(true);
- tmp[countPruefungen]->setNachpruefungNote(note.ToInt());
- }
-
- }
- break;
- }
- if(countPosition == 3){
- countPosition = 0;
- this->pruefungen->add(tmp[countPruefungen], i-1);
- countPruefungen++;
- }
-
- }
- //fix: Bug das plötzlich line bloß noch 1 buchstabig ist...
- line = file->Strings[i].c_str();
- }
- }
-
-
- }
-
-
- /**
- * Kurse
- **/
-
- if(file->Strings[i].Compare("//Kurse") == 0){
- isKurse = true;
- cIsKurse = i;
- }
-
- if(isKurse && cIsKurse < i){
- char buffer[6];
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren */
-
-
-
- int countBuffer =0;
- int countPosition =0;
-
- Kurs *tmp;
-
- for(int j =1; j<file->Strings[i].Length(); j++){
- if(line[j] != 'K' && line[j] != '#' && !error){
- buffer[countBuffer] = line[j];
- countBuffer++;
- }else{
- if(countBuffer > 0){
- switch(countPosition){
- case 0: // Name
- tmp = new Kurs(buffer, false);
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
- break;
- case 1: //12.1
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- tmp->setNote(note.ToInt(), 1);
- }
- break;
- case 2: //12.2
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- tmp->setNote(note.ToInt(), 2);
- }
- break;
- case 3: //13.1
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- tmp->setNote(note.ToInt(), 3);
- }
- break;
- case 4: //13.2
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- tmp->setNote(note.ToInt(), 4);
- }
- break;
- case 5: //12.1
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- if(note.ToInt() == 0){
- tmp->setLK(false);
- }else if(note.ToInt() == 1){
- tmp->setLK(true);
- }
- }
- break;
- case 6: //12.1
- if(tmp != NULL){
- String note = buffer;
- buffer[0] = '\0';
- buffer[1] = '\0';
- buffer[2] = '\0';
- buffer[3] = '\0';
- buffer[4] = '\0';
- buffer[5] = '\0'; //Buffer leeren
- countPosition++;
- countBuffer =0;
-
- if(note.ToInt() == 0){
- tmp->setAbg(false);
- }else if(note.ToInt() == 1){
- tmp->setAbg(true);
- }
- }
- break;
- }
- if(countPosition == 6){
- this->addKurs(tmp);
- //delete tmp;
- countPosition =0;
- }
- }
- }
- }
- }
- }
- }
- #pragma package(smart_init)