Autor Beitrag
Drunken_SheeP
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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
ausblenden 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
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 17.12.04 18:01 
natürlich musst du die werte auch erst in den record abspeichern, dass ginge dann ca. so
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: 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":
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 19.12.04 01:11 
ne geht nicht. letzten endes musste ich es doch mit nem array lösen, aber danke trotzdem! :D