Читайте также:
|
|
//INPUTD.PAS
unit InputD;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons,T_Vector,math;
type
TForm2 = class(TForm)
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
StaticText7: TStaticText;
StaticText8: TStaticText;
StaticText10: TStaticText;
StaticText11: TStaticText;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit9: TEdit;
kzTime: TEdit;
BitBtn1: TBitBtn;
Bevel1: TBevel;
StaticText9: TStaticText;
StaticText12: TStaticText;
StepTime: TEdit;
Koefz: TEdit;
StaticText13: TStaticText;
Edit8: TEdit;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Procedure DelSpace (var s:string); Far;
var
Form2: TForm2;
vrng,vsc,vrngr,errc,vDerNum:integer;
vcfn,vcfnr,vnusl:TVector;
vfreq,vcufz,vsexp:real;
vKos,vTend,vStepTime:real;
implementation
{$R *.DFM}
Procedure DelSpace (var s:string);
var i:integer;
begin
i:=1;
repeat
if s[i] = ' ' then begin delete(s,i,1);
i:=i-1;
end;
i:=i+1;
until i>length(s);
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
var i,j,k:integer;
temp:string;
begin
errc:= 0;
temp:=edit1.Text;
DelSpace(temp);
edit1.Text:=temp;
temp:=edit4.Text;
DelSpace(temp);
edit4.Text:=temp;
temp:=StepTime.Text;
DelSpace(temp);
StepTime.Text:=temp;
temp:=kzTime.Text;
DelSpace(temp);
kzTime.Text:=temp;
temp:=Koefz.Text;
DelSpace(temp);
Koefz.Text:=temp;
temp:=edit8.Text;
DelSpace(temp);
edit8.Text:=temp;
vrng:=strtoint(edit1.Text);
vrngr:=strtoint(edit4.Text);
vTend:=strtoint(kzTime.Text);
vStepTime:=strtoint(StepTime.Text);
vKos:=strtoint(Koefz.text);
vDerNum:=strtoint(edit8.text);
vsc:=floor(vTend/vSteptime);
vcfn:=TVector.VCreate(vrng+1);
vcfnr:=TVector.VCreate(vrngr+1);
vnusl:=TVector.VCreate(vrng);
if vsc<=50 then begin
MessageBox('Мало шагов решения');
inc(errc);
exit;
end;
if vrng<=0 then begin
MessageBox('Нулевой порядок уравнения');
inc(errc);exit;
end;
if vrngr<0 then begin
MessageBox('Некорректен код порядка справа');
inc(errc);exit;
end;
if vTend<=0 then begin
MessageBox('Ошибочно конечное значение аргумента');
inc(errc);exit;
end;
if vStepTime<=0 then begin
MessageBox('Ошибочен шаг по аргументу');
inc(errc);exit;
end;
if vrngr>vrng then begin
MessageBox('Порядок справа больше чем слева');
inc(errc);exit;
end;
if (vDerNum<0) or (vDerNum>(vrng-1)) then begin
MessageBox('Не корректен порядок производной');
inc(errc);exit;
end;
j:=1;
edit2.Text:=edit2.Text+' '+#33+' ';
i:=0;
while copy(edit2.Text,j,1) = ' ' do j:=j+1;
repeat
k:=j;
while copy(edit2.Text,j,1)<>' ' do j:=j+1;
if copy(edit2.Text,k,j-k) = #33 then break;
vcfn.Vector[i]:=strtofloat(copy(edit2.Text,k,j-k));
while copy(edit2.Text,j,1) = ' ' do j:=j+1;
inc(i);
until false;
temp:=edit2.text;
delete (temp,j-1,length(temp)-j+2);
edit2.text:=temp;
if ((i-1) <> vrng) or (vcfn.Vector[0]=0) then begin
MessageBox('Кол-во коэффициентов не соответствует '+#13+'порядку уравнения слева');
inc(errc);exit;
end;
if vrngr >= 0 then begin
j:=1;
edit5.Text:=edit5.Text+' '+#33+' ';
i:=0;
while copy(edit2.Text,j,1) = ' ' do j:=j+1;
repeat
k:=j;
while copy(edit5.Text,j,1)<>' ' do j:=j+1;
if copy(edit5.Text,k,j-k) = #33 then break;
vcfnr.Vector[i]:=strtofloat(copy(edit5.Text,k,j-k));
while copy(edit5.Text,j,1) = ' ' do j:=j+1;
inc(i);
until false;
temp:=edit5.text;
delete (temp,j-1,length(temp)-j+2);
edit5.text:=temp;
if ((i-1) <> vrngr) or (vcfnr.Vector[0]=0) then begin
MessageBox('Кол-во коэффициентов не соответствует '+#13+'порядку уравнения справа');
inc(errc);exit;
end;
end;
j:=1;
edit3.Text:=edit3.Text+' '+#33+' ';
i:=0;
while copy(edit2.Text,j,1) = ' ' do j:=j+1;
repeat
k:=j;
while copy(edit3.Text,j,1)<>' ' do j:=j+1;
if copy(edit3.Text,k,j-k) = #33 then break;
vnusl.Vector[i]:=strtofloat(copy(edit3.Text,k,j-k));
while copy(edit3.Text,j,1) = ' ' do j:=j+1;
inc(i);
until i=vrng;
temp:=edit3.text;
delete (temp,j-1,length(temp)-j+2);
edit3.text:=temp;
if i <> vrng then begin
MessageBox('Количество начальных условий не соответствует '+#13+'порядку уравнения слева');
inc(errc);exit;
end;
temp:=edit6.Text;
DelSpace(temp);
edit6.Text:=temp;
temp:=edit7.Text;
DelSpace(temp);
edit7.Text:=temp;
temp:=edit9.Text;
DelSpace(temp);
edit9.Text:=temp;
vfreq:=strtofloat(edit6.Text);
vsexp:=strtofloat(edit7.Text);
vcufz:=strtofloat(edit9.Text);
if errc = 0 then form2.close;
end;
end.
Дата добавления: 2015-07-25; просмотров: 38 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Форма ввода данных | | | Форма основной программы |