Hallo,
danke für die Begrüßung und den Tip!
Habe das Beispiel aus dem Link mal bei mir eingefügt...es scheint zunächst zu funktionieren. Zwei Dinge jedoch noch:
1. Wenn ich dann jedoch auf den Knopf zum Plotten der Daten klicke, dann bekomme ich die Fehlermeldung : List index out
of bounds(1).
2. Ich möchte mich nicht auf eine bestimmte Anzahl an Zeilen des Grids festlegen! Es soll also kein "for J := 1 to ? do"
da drin sein, sondern ein Ausdruck, mit dem ich immer bis zum Ende des Grids alle Zahlen aufnehmen kann! Wie kann ich
das lösen?
Hier mal der Code, den ich übernommen habe und wie er bei mir drinsteht für ein StringGrid mit 2 Spalten (x,y) und 1010 Zeilen (ein Spektrum).
Das StringGrid hat in den obersten Zeile jeweils eine Beschriftung und sieht skizziert etwa so aus:
Wellenzahl(x) Intensität(y)
3372.41 9748
... ...
... ...
bis Zeile +/- 1010
Der Code:
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: 26: 27:
| procedure TForm1.Button2Click(Sender: TObject); var I,J : Integer; function lw(s:string):string; begin repeat if copy(s,1,1)=' 'then s:=copy(s,2,length(s)-1); until (copy(s,1,1)<>' ')or(s=''); repeat if copy(s,length(s),1)=' 'then s:=copy(s,1,length(s)-1); until (copy(s,length(s),1)<>' ')or(s=''); lw:=s; end;
function alsD(s:string):double; var c:integer; d:double; begin for c:=1 to length(s) do if s[c]=',' then s[c]:='.'; val(lw(s),d,c);if c<>0 then alsD:=-0 else alsD:=d;end;
begin for I := 1 to 2 do begin Chart1.Series [I-1].Clear; for J := 1 to 1010 do begin Chart1.Series [I-1].Add(alsD(StringGrid1.Cells[I,J]),'', Chart1.Series [I-1].SeriesColor); Chart1.Series [I-1].Marks.Visible := true; end; end; end; |
[/code]
So, bin für jeden Tip dankbar und hoffe, den Code hier richtig eingefügt zu haben!
Grüße
Kalak