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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
|
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, TAGraph, Forms, Controls, Graphics, Dialogs, StdCtrls,Grids, Buttons, GUI_Unit_xyChart;
type { TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BU_EVA: TButton;
Chart1: TChart;
ED_Anzahl: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
LB_Erg: TListBox;
SG_Erg: TStringGrid;
procedure BU_EVAClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public { public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
var
y1 : Array [0..99] of Double;
y2 : Array [0..99] of Double;
dt : Array [0..99] of Double; //Array, damit t ausgegeben werden kann
//dabei ist dt = t = t + sw
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'Test der gui_unit_xyChart';
BU_EVA.Caption := 'Berechnung';
//Testdaten
ED_Anzahl.Text := '20';
//Listbox leeren
Form1.LB_Erg.Clear;
//StringGrid leeren
Form1.SG_Erg.Clear;
//Diagramm leeren
//Form1.Chart1.Clear; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! funktioniert so nicht
end; //Ende Prozedur FormCreate
procedure TForm1.BU_EVAClick(Sender: TObject);
//Variablen deklarieren
var
Anz, //Anz = Anzahl der Wertepaare (mind. 10, max. 100)
i: Integer; // i ist Zählvariable für for-Schleife
sw, //sw = Schrittweite
t: Double; //t für Formel
begin
//Eingabe von Anz in ED_Anzahl
Anz := StrToInt(ED_Anzahl.Text);
//Plausibilitätsprüfung, ob Anz ausreichend ist
if (Anz < 10) or (Anz > 100)
Then ShowMessage ('Wert muss >=10 und <=100 sein!');
//Edit-Feld ED_Anzahl zur erneuten Eingabe vorbereiten, falls Fehler bei //Plausibilitätsprüfung entstanden ist
Ed_Anzahl.Clear; //Edit-Feld ED_Anzahl leeren
Ed_Anzahl.SetFocus; //Cursor in Edit-Feld ED_Anzahl setzen
//Berechnung
i := 0;
sw := 20/(Anz - 1);
t := 0;
for i := 0 to Anz do
begin
y1[i] := sin(t);
y2[i] := exp(0.1*(t)) * sin(t);
dt[i] := t;
t := t + sw; //t um die Schrittweite erhöhen
end; //Ende for-Schleife
//Ausgabe
//Ausgabe für Listbox LB_Erg
LB_Erg.Items.Add(Format('%5.2s %20.2s %20.2s', ['t', 'y1', 'y2'])); //Tabellenkopf
for i:=0 to Anz - 1 do
begin
LB_Erg.Items.Add(Format('%5.2n %20.2n %20.2n', [dt[i], y1[i], y2[i]]));
end; //Ende for-Schleife
//Ausgabe für StringGrid SG_Erg
........................................
........................................
........................................
end; //Ende Prozedur BU_EVAClick
end. |