| Autor |
Beitrag |
Drunken_SheeP
Hält's aus hier
Beiträge: 9
|
Verfasst: Do 16.12.04 15:39
Hi, bin noch ein ziehmlicher delphi newbie, bin aber grad dabei ein einfaches programm zu schreiben, das eine physikalischen versuch auswerten soll (millikan versuch). dabei möchte ich werte berechnen lassen und dann in einem chart als histogramm darstellen.
mein prob ist nun, dass ich mit diesem chart 0 zurechtkomm...F1 hilft mir auch reichlich wenig, ist nicht ganz so klar und überschaubar wie es sein könnte. ok, zum eigentlich prob: ich will, dass wenn ich einen X wert eingebe dann der zugehörige Y wert (also der balken) immer um 1 erhöht werden. was ich mir quasi gedacht hab war dieses Series1.addXY(Xwert , <(Ywert an der stelle x)+1> ) nur weiss ich nicht wie ich an diesen <Ywert an der stelle x> komm. kann mir das jemand bitte erklären?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 16.12.04 20:19
ich weiss zwar nicht genau was du machen willst aber den wert für y ausrechnen muss dein programm !
das würde dann vielleicht so aussehen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function berechneY(x:integer):integer; begin result := x * 3; end;
procedure button1click; begin series1.add(x); series2.add(berechneY(x)); end; |
|
|
Drunken_SheeP 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 17.12.04 15:10
ne hast nicht verstanden. was ich im prinzip wissen will, ist dass wenn ich einen Wert eingebe:
Series1.AddXY(5, 23);
Ich ich dann den Y wert (also 23) da wieder rauslesen kann;
also Ywert= ???
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 17.12.04 17:54
ja, aber damit du den y wert an die series überweisen kannst musst du den wert ja erstmal berechnen !
und wenn dein Programm den Wert berechnet hat, kannst du den wert auch irgendwo zwischenspeichern, z.b. in einem record
Quelltext 1: 2: 3: 4: 5:
| type Twertliste = record x : integer; y : integer; end; |
dann musst du im prog noch eine globale variable zum zählen und ein array vom recordtyp deklarieren z.b. so
Quelltext 1: 2: 3:
| var wertlisteneintraege: integer; wertliste: array [1..1000] of Twertliste; |
anschliessend kannst du mit einer einfachen schleife dann immer den zum x wert passenden ywert auslesen:
Quelltext 1: 2: 3: 4: 5: 6: 7:
| function getYvalue(x:integer):integer; var i :integer; begin result := 0; for i := 1 to wertlisteneintraege do if wertliste[i].x = x then result := wertliste[i].y; end; |
vielleicht ginge es auch einfacher, aber so auf jeden fall auch ! nachteil: die wertliste ist in dem beispiel auf 1000 eintraege beschränkt! du könntest aber auch ein dynamisches array mit setlength() erzeugen, hierzu fehlt mir aber die praxiserfahrung.
hoffe du kannst damit was anfangen.
gruss retnyg
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 17.12.04 18:01
natürlich musst du die werte auch erst in den record abspeichern, dass ginge dann ca. so
Quelltext 1: 2: 3: 4: 5: 6: 7:
| x:=10; y:=berechneY(x); inc(wertlisteneintraege); // wertlistenzähler erhöhen wertliste[wertlisteneintraege].y := y; wertliste[wertlisteneintraege].x := x; Series1.adD(x,y); |
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Fr 17.12.04 18:21
Hallo,
du brauchst die Werte nicht extra noch einer Liste oder einem Array speichern. Du kannst die Werte direkt aus dem Diagramm "auslesen": Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin with Chart1 do begin for I := 0 to Series[0].Count - 1 do begin ShowMessage(format('%.2f %.2f', [Series[0].XValue[I], Series[0].YValue[I]])); end; end; end; | Gruß Hape!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Drunken_SheeP 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 19.12.04 01:11
ne geht nicht. letzten endes musste ich es doch mit nem array lösen, aber danke trotzdem! 
|
|
|