TChart, Grafen zeichnen || Messwerte abspeichern



  • Hallo,

    Ich halte eine Datenbank für das Abspeichern von Meßwertreihen etwas übertrieben. Normale ASCII-Dateien tun es mit Sicherheit auch. Ich mach das jedenfalls so. An meinem Institut haben wir Meßreihen die über Jahre gehen.
    Wie du sie speicherst ist eigentlich egal aber am Einfachsten ist es sicher einfach
    Zeit Wert
    In einem Dateiheader kannst du dann z.Bsp. die Einheiten angeben. Die Einheiten sollten sich dann in dieser Datei aber nicht mehr ändern. In deinem Beispiel ist die Angabe der Einheit bei jeden Wert sicher nicht nötig.

    Ciao



  • Danke mal soweit, aber mein wirkliches Problem, nämlich wie ich ein Diagramm hinbekomm hat sich dadurch auch nicht gelöst.

    thx



  • Wenn du TChart verwenden willst.
    Erzeuge eine Form
    Packe eine TChart-Komponente drauf
    öffne den Eigenschaftseditor von TChart und füge eine Serie hinzu (LineSeries)
    Nun brauchst du nur noch deine Daten einzulesen und mit TLineSeries::AddXY() deine Daten hinzufüge.
    Das wars.



  • Danke, bitte korrigier mich aber in meinem Fall würde das etwa so aussehen, wenn ich dich richtig verstanden hab:

    [cpp]
    frmGrafikAnz -> TChart1 -> Series1 -> AddXY(X_Array[],Y_Array[]);
    [/cpp]
    

    oder nicht?



  • Die Funktion fügt einzelne Werte in eine Serie ein. Für dein Array würde das z.Bsp. so aussehen

    for( int i=0; i<count; ++i )
      frmGrafikAnz -> TChart1 -> Series1 -> AddXY(X_Array[i],Y_Array[i],"",clTeeColor);
    


  • Hi, danke für die Antwort!

    Habs jetzt mittlerweile folgendermaßen gelöst:

    [cpp]
    int i=1;
    int datei = FileOpen("Daten\\History.txt", fmOpenRead);
    int BytesToRead = sizeof (struct Parameter);
    int length = FileSeek(datei,0,2);
    int position = FileSeek (datei,0,0);
    
    //Grafikanzeigen löschen damit diese nicht "überzeichnet" werden
    frmGrafik -> Series1 -> Clear();
    frmGrafik -> Series2 -> Clear();
    frmGrafik -> Series3 -> Clear();
    frmGrafik -> Series4 -> Clear();
    
            while(position < length)
            {FileRead (datei, &stPrmtr_read, sizeof(struct Parameter));
             frmGrafik -> Series1 -> Add(stPrmtr_read.lux, "",clRed);
             frmGrafik -> Series2 -> Add(stPrmtr_read.vorlauf, "",clRed);
             frmGrafik -> Series3 -> Add(stPrmtr_read.speicher, "",clRed);
             frmGrafik -> Series4 -> Add(stPrmtr_read.ruecklauf, "",clRed);
             BytesToRead = sizeof (struct Parameter) *  i;
             i++;
             position = FileSeek(datei, BytesToRead, 0);
            }
    
    FileClose(datei);
    
    [/cpp]
    

    Ich hohl mir dabei die gespeicherten Werte aus der History.txt (wo ich sie über eine Struktur reingespeichert hab). Und die Werte werden so lange rausgeschrieben bis ich das Ende der Datei erreicht hab.

    Wie gefällt euch diese Lösung??? 😃
    Gibts noch bessere???

    mfg Tom



  • Hallo
    ich weiss nicht, wie man über der TChart-Komponente Daten aus einer Datenbank anzeigen lassen kann. Über der TDBChart wäre es ja kein Problem.
    Ich müsste höchstwahrscheinlich eine LINE-Series erzeugen dann die Funktion ADDXY, die angeboten wird, benutzen. Ich muss die Time-Werte aus der Datenbank auf die x-Achse transferieren und die Messwerte auf die y-Achse übergeben. Jedoch kann ich meine Zielsetzung nicht programmtechnisch umsetzen. 😕
    Ich wäre für jede lehrreiche Antwort dankbar



  • Hallo,

    Was für ein Problem hast du denn genau? Ich glaube auch, dass es besser wäre, wenn du für deine Frage einen neuen Thread aufmachen würdest.
    Ansonsten beschäftigt sich dieser Thread in etwa mit deinem Thema (siehe Seite 4).
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-110865

    Ciao



  • Danke für den Tip
    ich hab meine Problemstellung kopiert und dort abgesendet.
    Ich will Daten auf Tchart grafisch darstellen und weiss nicht wie ich auf die datenbank zugreifen kann um die daten grafisch dartsellen zu können. Allgemein über datenzugriff weiss ich bescheid nur nicht wie das mittels TCHart-Komponente funktioniert...da bin ich überfragt.
    Ich will über der Line-series die Zeit auf der x-Achse darstellen und auf der y-Achse die Messwerte. Alle Daten (Zeit und Messwerte) sind in der Access- datenbank gespeichert. Die grafische Darstellung über der TCHart soll bessere Evaluationsmöglichkeiten der Daten bieten. Wie kann ich dies realisieren? Hat jemand vielleicht ein Rat 😕



  • Du solltest dein Problem nicht in diesen Thread kopieren, sondern dir Seite 4 dieses Threads einmal durchlesen. Da ist im Prinzip beschrieben wie man Daten aus einer Datenbank holt und in ein Chart einfügt.



  • Stimmt seite 4 sehe ich auch erst jetzt
    hier sind wirklich gute codes; versuch nun mein problem zu beseitigen
    danke


Anmelden zum Antworten