123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- #include "InitDatei.h"
- #include "Datei.h"
- #include "Text.h"
- using namespace Framework;
- // Inhalt der InitDatei Klasse aus InitDatei.h
- // Konstruktor
- InitDatei::InitDatei()
- : ReferenceCounter(),
- pfad(new Text()),
- name(new RCArray<Text>()),
- wert(new RCArray<Text>())
- {}
- InitDatei::InitDatei(Text* pfad)
- : ReferenceCounter(),
- pfad(new Text()),
- name(new RCArray<Text>()),
- wert(new RCArray<Text>())
- {
- setPfad(pfad);
- }
- InitDatei::InitDatei(const char* pfad)
- : ReferenceCounter(),
- pfad(new Text()),
- name(new RCArray<Text>()),
- wert(new RCArray<Text>())
- {
- setPfad(pfad);
- }
- // Destruktor
- InitDatei::~InitDatei()
- {
- pfad->release();
- name->release();
- wert->release();
- }
- // nicht constant
- void InitDatei::setPfad(Text* pfad)
- {
- this->pfad->setText(pfad);
- }
- void InitDatei::setPfad(const char* pfad)
- {
- this->pfad->setText(pfad);
- }
- bool InitDatei::laden()
- {
- Datei* dat = new Datei();
- dat->setDatei(pfad->getText());
- if (!dat->open(Datei::Style::lesen))
- {
- dat->release();
- return 0;
- }
- removeAlle();
- Text* zeile = dat->leseZeile();
- while (zeile)
- {
- zeile->remove("\r\n");
- zeile->remove("\n");
- Text* n = zeile->getTeilText(0, zeile->positionVon('='));
- Text* w = zeile->getTeilText(zeile->positionVon('=') + 1);
- name->add(n);
- wert->add(w);
- zeile->release();
- zeile = dat->leseZeile();
- }
- dat->close();
- dat->release();
- return 1;
- }
- bool InitDatei::addWert(Text* name, Text* wert)
- {
- if (!wertExistiert(name->getText()))
- {
- this->name->add(new Text(name->getText()));
- this->wert->add(new Text(wert->getText()));
- name->release();
- wert->release();
- return 1;
- }
- name->release();
- wert->release();
- return 0;
- }
- bool InitDatei::addWert(const char* name, const char* wert)
- {
- return addWert(new Text(name), new Text(wert));
- }
- bool InitDatei::setWert(Text* name, Text* wert)
- {
- if (!wertExistiert(name->getText()))
- {
- name->release();
- wert->release();
- return 0;
- }
- auto n = this->name->begin();
- for (auto v = this->wert->begin(); v; v++, n++)
- {
- if (n->istGleich(name->getText()))
- {
- v->setText(wert->getText());
- name->release();
- wert->release();
- return 1;
- }
- }
- name->release();
- wert->release();
- return 0;
- }
- bool InitDatei::setWert(const char* name, const char* wert)
- {
- return setWert(new Text(name), new Text(wert));
- }
- bool InitDatei::setWert(int num, Text* wert)
- {
- bool result = setWert(num, wert->getText());
- wert->release();
- return result;
- }
- bool InitDatei::setWert(int num, const char* wert)
- {
- if (num >= name->getEintragAnzahl()) return 0;
- this->wert->z(num)->setText(wert);
- return 1;
- }
- bool InitDatei::removeWert(Text* name)
- {
- bool result = removeWert(name->getText());
- name->release();
- return result;
- }
- bool InitDatei::removeWert(const char* name)
- {
- if (!wertExistiert(name)) return 0;
- for (int i = 0; i < wert->getEintragAnzahl(); ++i)
- {
- if (this->name->z(i)->istGleich(name))
- {
- this->name->remove(i);
- this->wert->remove(i);
- return 1;
- }
- }
- return 0;
- }
- bool InitDatei::removeWert(int num)
- {
- if (num >= wert->getEintragAnzahl()) return 0;
- this->name->remove(num);
- this->wert->remove(num);
- return 1;
- }
- void InitDatei::removeAlle()
- {
- while (wert->getEintragAnzahl() > 0)
- {
- this->name->remove(0);
- this->wert->remove(0);
- }
- }
- bool InitDatei::speichern()
- {
- Datei* dat = new Datei();
- dat->setDatei(pfad->getText());
- if (!dat->existiert()) dat->erstellen();
- if (!dat->open(Datei::Style::schreiben))
- {
- dat->release();
- return 0;
- }
- auto n = name->begin();
- for (auto v = wert->begin(); v; v++, n++)
- {
- Text* zeile = new Text("");
- zeile->append(n->getText());
- zeile->append("=");
- zeile->append(v->getText());
- zeile->append("\n");
- dat->schreibe(zeile->getText(), zeile->getLength());
- zeile->release();
- }
- dat->close();
- dat->release();
- return 1;
- }
- // constant
- int InitDatei::getWertAnzahl() const
- {
- return name->getEintragAnzahl();
- }
- bool InitDatei::wertExistiert(Text* name)
- {
- bool result = wertExistiert(name->getText());
- name->release();
- return result;
- }
- bool InitDatei::wertExistiert(const char* name)
- {
- for (Text* n : *this->name)
- {
- if (n->istGleich(name)) return 1;
- }
- return 0;
- }
- int InitDatei::getWertNummer(Text* name)
- {
- int result = getWertNummer(name->getText());
- name->release();
- return result;
- }
- int InitDatei::getWertNummer(const char* name)
- {
- int i = 0;
- for (Text* n : *this->name)
- {
- if (n->istGleich(name)) return i;
- }
- return -1;
- }
- Text* InitDatei::getWert(Text* name)
- {
- Text* result = getWert(name->getText());
- name->release();
- return result;
- }
- Text* InitDatei::getWert(const char* name)
- {
- auto v = wert->begin();
- for (auto n = this->name->begin(); n; n++, v++)
- {
- if (n->istGleich(name)) return dynamic_cast<Text*>(v->getThis());
- }
- return 0;
- }
- Text* InitDatei::getWert(int num)
- {
- if (num >= name->getEintragAnzahl()) return 0;
- return wert->get(num);
- }
- Text* InitDatei::zWert(Text* name)
- {
- Text* result = zWert(name->getText());
- name->release();
- return result;
- }
- Text* InitDatei::zWert(const char* name)
- {
- auto v = wert->begin();
- for (auto n = this->name->begin(); n; n++, v++)
- {
- if (n->istGleich(name)) return v;
- }
- return 0;
- }
- Text* InitDatei::zWert(int num)
- {
- if (num >= wert->getEintragAnzahl()) return 0;
- return wert->z(num);
- }
- Text* InitDatei::getName(int num)
- {
- if (num >= name->getEintragAnzahl()) return 0;
- return name->get(num);
- }
- Text* InitDatei::zName(int num)
- {
- if (num >= name->getEintragAnzahl()) return 0;
- return name->z(num);
- }
- Text* InitDatei::getPfad() const
- {
- return dynamic_cast<Text*>(pfad->getThis());
- }
- Text* InitDatei::zPfad() const
- {
- return pfad;
- }
|