TChart Beispiel



  • Du greifst bei series1[x][y] auf den Index 30 (sowohl x als auch y zu).

    Kann mir jemand sagen, wie man oben die Indexüberschreitung übergehen kann,

    also konret mit Codebeispiel, wie es richtig wäre
    Danke
    LG Eliza



  • So etwa

    void Array_fuellen()
    {
    int i=0;
       for (int x=0; x<30; ++x)
          for (int y=0;y<30; ++y)
          {
             series1[29-x][29-y]=i;
             i++;
          }
    }
    


  • Hallo,

    ich will jetzt Werte für eine Graphik aus einem Memofeld entnehemen:
    Code:

    Chart1->Series[0]->AddXY(j,Memo1->Lines[j],"",clTeeColor);
    

    Es kommt die Fehlermeldung:

    [C++ Fehler] UnitGraphik.cpp(326): E2034 Konvertierung von 'TStrings' nach 'double' nicht möglich

    Ich verstehe es nicht, weil doch im Memo alles als String drinsteht.
    Wozu die Konvertierung. Und wie macht man eine String/Double Konvertierung?

    Weiß jemand wie man es richtig schreibt.

    LG Eliza



  • Versuch mal so:

    Chart1->Series[0]->AddXY(j,StringToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    


  • Danke, hab's probiert, aber es kommt die Meldung:

    [C++ Fehler] UnitGraphik.cpp(326): E2268 Aufruf der undefinierten Funktion 'StringToFloat'



  • sorry, war mein Fehler:

    Chart1->Series[0]->AddXY(j,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    

    so müsste es gehen



  • Ich habe es auch mit StrToFloat probiert, aber da kommt dann die Meldung:

    [C++ Fehler] UnitGraphik.cpp(326): E2034 Konvertierung von 'TStrings' nach 'AnsiString' nicht möglich
    

    Verstehe ich absolut nicht, warum er mit String nicht zufrieden ist ??

    LG
    Eliza



  • tut mir leid, da bin ich überfragt.
    Bei mir kommt der Fehler nicht.



  • Hallo Sonic,

    wenn dich interessiert, ich hab's rausbekommen:

    Chart1->Series[0]->AddXY(j,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    

    so funktionierts 😉
    LG
    Eliza



  • [quote="*Eliza"]Hallo Sonic,

    wenn dich interessiert, ich hab's hinbekommen:

    Chart1->Series[0]->AddXY(j,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    

    dein Vorschlag war schon richig, ich habe irgendwie einen Fehler im Code reingebracht.
    Danke.

    LG Eliza



  • Ich bin vor Freude fast vom Stuhl gefallen 🙂



  • Hallo @all,

    und noch eine Frage zu TChart:

    Weiß jemand, wie man es in TChart einrichtet oder programmiert, dass stellenweise keine durchgezogenen Linien gemacht werden.

    z.B ich habe die Werte 1,2,3,4,5,6,7,8,9 (Beispielwerte jetzt)

    Der Grapfh soll z.B von 1-4 eine durchgezogene Linie zeichnen.
    5 aussparen, (aber vielleicht einen Punkt hinmachen)
    und dann wieder von 6-9 eine durchgezogene Linie.

    Vielleicht weiß es hier ja jemand. Danke für die Antworten vorab.

    LG Eliza



  • Das geht so:

    AnsiString Beschriftung_X_Achse = "irgendwas";
    
    Chart1->Series[0]->AddNull(Beschriftung_X_Achse);
    


  • Hallo sonic,

    ich verstehe es ehrlich gesaagt nicht ganz.
    jezt bezogen auf mein Beipiel, wie würde das aussehen?

    LG
    Eliza



  • Chart1->Series[0]->AddXY(0,1,"",clTeeColor);
    Chart1->Series[0]->AddXY(1,2,"",clTeeColor);
    Chart1->Series[0]->AddXY(2,3,"",clTeeColor);
    Chart1->Series[0]->AddXY(3,4,"",clTeeColor);
    Chart1->Series[0]->AddNull("");
    Chart1->Series[0]->AddXY(5,5,"",clTeeColor);
    Chart1->Series[0]->AddXY(6,6,"",clTeeColor);
    Chart1->Series[0]->AddXY(7,7,"",clTeeColor);
    Chart1->Series[0]->AddXY(8,8,"",clTeeColor);
    Chart1->Series[0]->AddXY(9,9,"",clTeeColor);
    


  • sonic_1233 schrieb:

    ...

    Zu Ostern postest du das für ihn als Schleife 😃



  • Schleifen kosten bei mir Aufpreis 🕶



  • Hallo,

    nochmal zum (nicht)-Verbinden von Graphen

    ich habe folgenden Code

    Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
                if (mlk1.mMilch[j]==0)
                {
    
                 Chart1->Series[0]->AddNull("");
                }
    

    in der Struktur mlk1 kann irgendwo eine 0 vorkommen.
    Diese soll nicht mit dem vorhergehenden und mit dem nachkommenden Wert verbunden werden. Also ein unterbrochener Graph
    Wenn zb. die Werte im mkl1 um die O etwa so aussehen 5,0,8
    soll zwischen 5 und 8 keine Verbindungslinie gezeichnet werden.

    bis jetzt, wie mein Code ist, zeichnet er von 5 bis O eine Linie aber dann von O bis 8 keine mehr (5 und 8 sind nur Beispielwerte)

    Weiß jemand wie ich mein Problem lösen?

    LG
    Eliza



  • Wenn du das genau so stehen hast, dann fügst du den Wert mlk1.mMi[j] ja zweimal hinzu, wenn er 0 ist.
    einmal
    Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
    und wenn er 0 ist nochmal
    Chart1->Series[0]->AddNull("");
    Wäre doch eher:

    if (mlk1.mMilch[j]==0)
    {
        Chart1->Series[0]->AddNull("");
    }
    else
    {
        Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
    }
    

    EDIT: ist da jetzt eigentlich nen String oder ne Zahl in mlk1.mMilch[j]?
    Dann müsste das if ja auf "" oder "0" oder was auch immer testen und nicht 0.

    mfg
    xXx



  • evtl. auch das

    if (mlk1.mMilch[j]==0)
    {
        Chart1->Series[0]->AddXY(j,0,"",clNone);
    }
    else
    {
        Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
    }
    

    So kann man auch ungeordnete Werte eingeben.


Anmelden zum Antworten