Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Probleme mit ins Tchart geladenen Daten
AlffromMelmac - Mi 08.03.06 21:09
Titel: Probleme mit ins Tchart geladenen Daten
Hallo alle zusammen,
ich bräuchte eure Hilfe bzw. einen Tipp in die richtige Richtung.
Ich will Daten mit Hilfe eines opendialogs in ein Chart laden. Dies klappt(e) auch bisher ganz gut.
Wollte des Prog (mein erstes nicht Lehrbuch prog) mit 'echten' Daten testen und habe dadurch einen Fehler gefunden wo ich jetzt nicht weiter komm. Und zwar is dieser Progteil (s. unten) als integer ausgelegt und in der Realität brauch ich's auch für gleitkommazahlen. Leider komm ich aber ned so recht mit dem Austausch von integer mit double oder real zurecht weil ich noch a Anfänger bin. Könnte mir jdm. bitte erklären was ich falsch mach.
Vielen Dank für eure Hilfe
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TMainForm.FormCreate(Sender: TObject); var i: integer; begin LineSeries := FreqChart.Series[0] as TLineSeries; OpenDialog.InitialDir := ExtractFilePath(ParamStr(0)); FreqLabels := TStringList.Create;
with FreqLabels do for i := 1 to MAX_VALUES do if i = 1 then Add('16') else if i = 2 then Add ('20') else if i= 3 ....
end; |
......
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TMainForm.DoFileOpenExecute(Sender: TObject); var s: TStrings; i: integer; begin s := TStringList.Create; with OpenDialog do if Execute then begin s.LoadFromFile(FileName);
end else LineSeries.Clear; for i := 1 to Pred(s.Count) do LineSeries.AddY(StrToInt(s[i]), FreqLabels[i]); s.Free; end; |
Moderiert von
Tino: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 16.03.2006 um 10:49
digi_c - Mi 08.03.06 21:51
Ok. Sind die FreqLabels nun die Daten die du anzeigen wilslt oder irgendwelche Ortientierungsmarken?
Egal, würde es ausreichen die real Daten per trunc(int) abzuschneiden oder fallen dann Rundungsfehler zu stark ins Gewicht?
AlffromMelmac - Mi 08.03.06 23:42
Hallo digi,
danke für die schnelle Antwort und entschuldige meine späte.
Mhmhm, gute idee, weil die Nachkommastellen eigentlich ned sehr interessieren. Aber er meckert noch dass die untere Grenze des Konstantenausdrucks unterschritten wird und dass er einen Konstantenausdruck erwartet.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TMainForm.DoFileOpenExecute(Sender: TObject); var s: TStrings; i: integer; <span style="color: red">[b] z: trunc (i);[/b]</span> begin s := TStringList.Create; with OpenDialog do if Execute then begin s.LoadFromFile(FileName);
end else
[b]<span style="color: red"> for z := 1 to FreqLabels.Count do</span>[b][/b]
s.Add(IntToStr(RandomRange(0, 10000))); LineSeries.Clear; <span style="color: red"> [b] for z := 1 to Pred(s.Count) do[/b]</span> LineSeries.AddY(StrToInt(s[z]), FreqLabels[z]); s.Free; end; |
digi_c - Do 09.03.06 09:33
Du hast z als trunc von i deklariert. i ist aber eh schon ein Integer, also ist das doch sinnlos oder?
Deklariere z erstmal als integer und weise es ihm dann in einer extra Zeile mit trunc() zu;
AlffromMelmac - Do 09.03.06 09:55
Morgen,
Stimmt, was eh schon integer ist in ein integer umzuwandeln macht kaum Sinn.
Mhmhm, funktioniert leider noch nicht.
Sagt inkompatible Typen bei Zeile z:= trunc (s);
Wenn ich s also die Realwerte mit trunc () verbinde, wären sie doch integer. Habs ganz offensichtlich noch ned ganz kapiert.
Delphi-Quelltext
1: 2: 3: 4:
| var s: TStrings; i: integer; z: integer; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| begin z := trunc (s); s := TStringList.Create; with OpenDialog do if Execute then begin s.LoadFromFile(FileName);
end else for z := 1 to FreqLabels.Count do s.Add(IntToStr(RandomRange(0, 10000))); LineSeries.Clear; for z := 1 to Pred(s.Count) do LineSeries.AddY(StrToInt(s[z]), FreqLabels[z]); s.Free; end; |
digi_c - Do 09.03.06 11:49
Fast. Trunc() funktioniert natürlich nur bei float Werten und nicht bei Strings, die einen Floatwert beeinhalten. Den musst du vorher mit strtofloat(); umwandeln.
AlffromMelmac - Fr 10.03.06 00:08
Hab mir's nochmal recht lang durch den Kopf gehen lassen und hba's zu laufen gebracht...
Nochmals vielen Dank digi,
beste Grüße,
alf
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!