Piszę program który ma obliczac pewne wartosci, wrzucac wyniki do roznych memo, a nastepny z dwóch memo, wysylac wyniki do jednego pliku tekstowego i rysować wykres. Wszystko juz prawie udało mi się zrobić, tylko, że gdy kaze mu wysyłać dane z tego memo to wysyła je tylko raz. Wrzucam kod i proszę o pomoc.
unit Wentylatory;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
OknoCisnienieStatyczne: TEdit;
OknoCS: TLabel;
OknoCisnienieDynamiczne: TEdit;
OknoCD: TLabel;
KlawiszOblicz: TButton;
MemoHp: TMemo;
LabelWysokoscpompowania: TLabel;
LabelCisnienieDynamiczne: TLabel;
Memodh: TMemo;
memov: TMemo;
LabelPredkoscchwilowa: TLabel;
MemoRe: TMemo;
LabelRe: TLabel;
Memocsrednie: TMemo;
Labelc: TLabel;
MemoQ: TMemo;
LabelQ: TLabel;
Wyniki: TGroupBox;
OknoSrednica: TEdit;
Label1: TLabel;
KlawiszRysujWykres: TButton;
procedure OknoCisnienieStatyczneChange(Sender: TObject);
procedure OknoCisnienieDynamiczneChange(Sender: TObject);
procedure KlawiszObliczClick(Sender: TObject);
procedure OknoSrednicaChange(Sender: TObject);
procedure OknoCisnienieStatyczneKeyPress(Sender: TObject;
var Key: Char);
procedure OknoCisnienieDynamiczneKeyPress(Sender: TObject;
var Key: Char);
procedure OknoSrednicaKeyPress(Sender: TObject; var Key: Char);
procedure KlawiszRysujWykresClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
pi=3.141592;
T=293; // [K] temperatura
u=0.000001; // [m2/s] lepkosc kinematyczna
qp=1.25; // [kg/m3] gestosc powietrza
qs=790; // [kg/m3] gestosc spirytusu
qw=1000; // [kg/m3] gestosc wody
g=9.81; // [m/s2] siła grawitacji
var
Form1: TForm1;
Hp:real; // wysokosc pompowania [mmH2O]
dh:real; // cisnienie dynamiczne [mmH2O]
v:real; // predkosc chwilowa [m/s]
Re:real; // liczba reynoldsa
c:real; // predkosc srednia [m/s]
Q:real; // natezenie przeplywu [m3/s]
dhs:real; // wysokosc pompowania [mmSpirytusu]
Pd:real; // cisnienie dynamiczne [Pa]
A:real; //pole przekroju rury[m2]
d:real; //srednica rury [m]
implementation
{$R *.dfm}
procedure TForm1.OknoCisnienieStatyczneChange(Sender: TObject);
begin
try
dhs:=strtofloat(OknoCisnienieStatyczne.Text) ;
except
OknoCisnienieStatyczne.Text:='';
dhs:=0;
end;
end;
procedure TForm1.OknoCisnienieDynamiczneChange(Sender: TObject);
begin
try
Pd:=strtofloat(OknoCisnienieDynamiczne.Text);
except
OknoCisnienieDynamiczne.Text:='';
Pd:=0;
end;
end;
procedure TForm1.KlawiszObliczClick(Sender: TObject);
begin
A:=(d*d*pi)/4;
dh:=Pd/g;
memodh.Lines.Add(floattostrF(dh,ffFixed,100,4)); // policzenie dh
Hp:=(dhs*qs)/qw;
memoHp.Lines.Add(floattostrF(Hp,ffFixed,100,4),); // policzenie Hp
v:=sqrt((2*(dh/1000)*qs*g)/qp);
memov.Lines.add(floattostrF(v,ffFixed,100,4)); // policzenie v
Re:=ln((v*D)/u);
memoRe.Lines.Add(floattostrF(Re,ffFixed,100,4)); // policzenie Re
c:=0.9*v;
memocsrednie.Lines.add(floattostrF(c,ffFixed,100,4)); //policzenie c
Q:=A*c;
memoQ.Lines.add(floattostrF(Q,ffFixed,100,4)); //policzenie natezenia przepywu
end;
procedure TForm1.OknoSrednicaChange(Sender: TObject);
begin
try
d:=strtofloat(OknoSrednica.Text);
except
OknoSrednica.Text:='';
d:=0;
end;
end;
procedure TForm1.OknoCisnienieStatyczneKeyPress(Sender: TObject;
var Key: Char);
Const Dozwolone: Set Of Char = ['-', 'e', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', #8];
begin
if Not (Key In Dozwolone) Then
Key := #0;
end;
procedure TForm1.OknoCisnienieDynamiczneKeyPress(Sender: TObject;
var Key: Char);
Const Dozwolone: Set Of Char = ['-', 'e', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', #8];
begin
if Not (Key In Dozwolone) Then
Key := #0;
end;
procedure TForm1.OknoSrednicaKeyPress(Sender: TObject; var Key: Char);
Const Dozwolone: Set Of Char = ['-', 'e', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', #8];
begin
if Not (Key In Dozwolone) Then
Key := #0;
end;
procedure TForm1.KlawiszRysujWykresClick(Sender: TObject);
var
TF_Hp : TextFile;
TF_Q : TextFile;
TF_Suma : TextFile;
a : Real;
b : Real;
begin
try
memoHp.Lines.SaveToFile('Hp.txt');
memoQ.Lines.SaveToFile('Q.txt');
assignfile(TF_Hp,'Hp.txt');
assignfile(TF_Q,'Q.txt');
assignfile(TF_Suma,'Wykres.txt');
Reset(TF_Hp);
Reset(TF_Q);
Rewrite(TF_SUma);
ReadLn(TF_Hp,a);
ReadLn(TF_Q,b);
WriteLn(TF_Suma,a,b);
finally
CloseFIle(TF_Hp);
CloseFIle(TF_Q);
CloseFIle(TF_Suma);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DecimalSeparator := '.';
end;
end.
do tego momentu wszystko jest dobrze, nie wiem jak zrobic dalej, proszę o pomoc
wiem, że powinienem zrobić licznik, którym by był klawisz oblicz, żeby dane były zapisywane tyle razy ile był kliknięty klawisz oblicz, lecz nie wiem jak to zrobić.