TChart Beispiel
-
hm.. also habe mal bei AddXY versucht das x aus nem array einzubinden, jetzt kommt da so ne tolle (
) Fehlermeldung: List Index out of bounds..
kann mir da wer helfen, wo ich da falsch überlegt habe?//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Tchart2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int series1[30][30]; //--------------------------------------------------------------------------- void Array_fuellen() { int i=0; for (int x=30; x>0;x--) for (int y=30;y>0;y--) { series1[x][y]=i; i++; } } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Chart1->BottomAxis->Automatic=true; Chart1->BottomAxis->AutomaticMaximum=true; Chart1->BottomAxis->AutomaticMinimum=0; Chart1->LeftAxis->Automatic=false; Chart1->LeftAxis->AutomaticMaximum=false; Chart1->LeftAxis->AutomaticMinimum=false; Chart1->LeftAxis->SetMinMax(0,500); Array_fuellen(); int i=0; for (int x=30; x>0;x--) for (int y=30;y>0;y--) { Chart1->Series[1]->AddXY(series1[x][y], 4,"",clNone); i++; } } //---------------------------------------------------------------------------
-
Du greifst bei series1[x][y] auf den Index 30 (sowohl x als auch y zu). Damit liest du über die Arraygrenze, da dein Index ja nur bis 29 geht. Warum läuft deine Schleife eigentlich rückwärts. Ich sehe da keinen Sinn drin (außer Verwirrung stiften).
Hat dein Chart denn 2 Serien? HierChart1->Series[1]
greifts du ja auf die Zweite zu.
-
also das mit Verwirrung stiften ist wohl wahr, aber das hab ich ja nur als Beispiel geschrieben..
und jetzt hab ich den fehler, war ja nur eine linie (beim letzten warens zwei),
also auf die falsche zugegriffen ^^'danke!
-
Chart hat eine Funktion SeriesCount(), welche dir die Zahl der vorhandenen Series zurückgibt.
-
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