Hilfe: Daten speichern mit Vektoren



  • ich möchte ein Programm schreiben, das folgendes kann (bzw so stell ich es mir vor):
    - es soll zB über ein Menü (zB "Messreihe Neu") eine Form geladen werden in der man verschiedene Daten eingeben kann wie Bearbeiter, Kommentar usw.
    - dann sollen über Sensoren gemessene Daten auf einem Fliessbild über zB Edit-Komponenten angezeigt werden. Bis dahin kein Problem. Sensoren kann ich auch ansprechen und auslesen.

    Die Daten, die zB alle 1 Sekunde ausgelesen werden, sollen in der Messreihe gespeichert werden. (alle Daten zB als Text-Datei)
    Soweit ich weiss macht man das am besten mit Vektoren.
    Da ich damit wenig Erfahrung habe würde ich eine Klasse zB classMessdaten erzeugen, die die Daten enthält. Und dann bräuchte man ja für jede messreihe, die über eine einstellbare Zeit laufen soll, ein eigenes Objekt oder?
    Wie geh ich am besten vor?



  • Du brauchst eine Klasse die Bearbeiter, Kommentar und Messwerte speichert. Für die Messwerte würde ich den besagten vector der STL nehmen. Dafür brauchst du einne weitere Klasse oder ein struct, was die Datenelemente enthält, wie zb. Messzeit und Messwert. Dann kannst du das ganze in eine Datei speichern, indem du als ersten Datensatz eein struct speichert, was die Daten der Klasse oder struct mit Bearbeiter enthält, mit einem zusätzlichen Eintrag Zähler der Messwerte. Nachdem du das in eine Datei geschrieben hast, schreibst da danach fortlaufend die structs mit den Messwerten. Der Zähler enthält somit die Anzahl der structs der Messwerte, also wieviel Messwerte du gespeichert hast.

    Das Lesen der Daten erfolgt in dem Schema. Du liest das struct mit dem Bearbeiter und der Anzahl der Messwerte aus, in das besagte struct. Dann siehst du wieviele Messwerte du hast, anhand des Zählers. Dann liest du halt bis Dateiende jeden Messwert in ein struct ein (Messwerte), packst es in den Vector und gibst die einzelnen Werte auf einer Grafik aus.

    Die ganze Klasse enthält die Daten wie Bearbeiter etc und einen Vector mit den Messwerten, welche du jeweils einzeln in einem struct strukturiert speicherst.

    So würde ich es machen, wenn ich keine Datenbank verwende.

    MfG



  • also die Klasse für Bearbeiter, Kommentar und Messwert (hier zB Temperatur) habe ich angelegt:

    class Batchdaten {
    private:
    AnsiString bearbeiter;
    AnsiString kommentar;
    public:
    Batchdaten();
    ~Batchdaten();
    void get_bearbeiter(AnsiString bearbeiter);
    void get_kommentar(AnsiString kommentar);
    AnsiString set_bearbeiter();
    AnsiString set_kommentar();
    };

    die zugehörige CPP:
    Batchdaten::Batchdaten() {
    //TODO: Hier Ihren Quelltext einfügen
    }
    Batchdaten::~Batchdaten() {
    //TODO: Hier Ihren Quelltext einfügen
    }
    void Batchdaten::get_bearbeiter(AnsiString bearbeiter) {
    this->bearbeiter = bearbeiter;
    }
    void Batchdaten::get_kommentar(AnsiString kommentar) {
    this->kommentar = kommentar;
    }
    AnsiString Batchdaten::set_bearbeiter() {
    return bearbeiter;
    }
    AnsiString Batchdaten::set_kommentar() {
    return kommentar;
    }

    eine entsprechende Oberfläche mit Editfeldern existiert auch bereits. Was wäre der nächste Schritt?

    nun müsste ich doch eine weitere klasse anlegen für die Messwerte wie zB Temperatur, etc.?
    Wie meinst du das mit dem speichern und wie sieht das mit dem vektor aus?
    Den Vector würd ich so definieren: vector<class_messwerte>vector1;
    Aber ich muss dann ja auch objekte vorher erzeugen.

    Wäre sehr dankbar für Hilfe und Anregungen.


Anmelden zum Antworten