Finally

CloseFile(f);

end;

End;

Пример 20. Расчет значений функции на интервале [xn,xk] с шагом h. Изменим пример следующим образом: на форму поместим компонент для ввода шага расчета (LabeledEdit) .

Все места программы, в которых может возникнуть ошибка, возьмем в блоки обработки исключительных ситуаций. Ошибка при конвертации текстовых значений в значения вещественного типа может возникнуть при вводе интервала и шага расчета. При записи в файл может возникнуть ошибка, поэтому в любом случае необходимо предусмотреть разрыв файловой переменной и места на диске. С учетом вышесказанного, код программы нажатия на кнопку изменился следующим образом:

 

procedure TForm1.BitBtn1Click(Sender: TObject);

var

xn,xk,y,h:real;

i:integer;

Raschet:TextFile;

flag:boolean;

begin

Try

xn:=StrToFloat(Form1.LabeledEdit1.Text);

xk:=StrToFloat(Form1.LabeledEdit2.Text);

h:=StrToFloat(Form1.LabeledEdit4.Text);

Except

on EConvertError doMessageDlg('Ошибка в записи

числа',mtError,[mbOK],0);

End;

if h<=0 then

begin

MessageDlg('Ошибка в записи шага',

mtError,[mbOK],0);

exit;

end;

case Form1.RadioGroup1.ItemIndex of

0:begin

Form1.StringGrid1.Visible:=true;

Form1.Chart1.Visible:=false;

Form1.StringGrid1.Cells[0,0]:=' x ';

Form1.StringGrid1.Cells[1,0]:=' y ';

for i:=1 to Form1.StringGrid1.RowCount-1 do

begin

Form1.StringGrid1.Cells[0,i]:='';

Form1.StringGrid1.Cells[1,i]:='';

end;

i:=1;

while xn<=xk do

begin

y:=xn*xn;

if i>Form1.StringGrid1.RowCount

then Form1.StringGrid1.RowCount:=

Form1.StringGrid1.RowCount+1;

Form1.StringGrid1.Cells[0,i]:=

FloatToStr(xn);

Form1.StringGrid1.Cells[1,i]:=

FloatToStr(y);

xn:=xn+h;

inc(i);

end;

end;

1:begin

Form1.Chart1.SeriesList.Series[0].Clear;

Form1.StringGrid1.Visible:=false;

Form1.Chart1.Visible:=true;

while xn<=xk do

begin

y:=xn*xn;

Form1.Chart1.SeriesList.

Series[0].AddXY(xn,y,'',clRed);

xn:=xn+h;

end;

end;

2:begin

Form1.StringGrid1.Visible:=false;

Form1.Chart1.Visible:=false;

if Form1.SaveDialog1.Execute then

begin

Try

AssignFile(Raschet,

Form1.SaveDialog1.FileName);

Rewrite(Raschet);

while xn<=xk do

begin

y:=xn*xn;

WriteLn(Raschet,FloatToStr(xn)+'

'+FloatToStr(y));

xn:=xn+h;

end;








Дата добавления: 2015-04-10; просмотров: 727;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.