Пользователь
Регистрация: 12.11.2013
Сообщений: 68
|
ошибка с writeln
добрый день, начал перебирать свой курсач, взял для примера у однокурсника, все переделал, программа запускается ,но в строке writeln(file1,tx1+tx2+tx3); выдает ошибку, никак не могу понять в чем дело, подскажите пожалуйста
Безымянный.jpg
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Math, TeEngine, Series, ExtCtrls, TeeProcs,
Chart, jpeg;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
BitBtn1: TBitBtn;
Memo1: TMemo;
Chart1: TChart;
Series1: TLineSeries;
Chart2: TChart;
Series4: TLineSeries;
Chart3: TChart;
Series2: TLineSeries;
Series3: TLineSeries;
Series5: TLineSeries;
Series6: TLineSeries;
Label13: TLabel;
Label14: TLabel;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
BASE = Packed Record
txmas: string[48];
End;
var
Form1: TForm1;
alpha,betta,sigma,th,tx,ny,delta,xttaunach,xu,inta:real;
g,mh:integer;
MI:array[1..3,1..301] of integer;
file1:textfile;
fff:file;
tx1,tx2,tx3:string[16];
txx:base;
implementation
{$R *.dfm}
function integr(t:real;k:integer):real; forward;
////////////////////////////////////////////////////////////
function xt:real;
var
a,b,r,dx:real;
begin
dx:=tx/(ny-1);
a:=power(2.71,-betta*dx);
b:=sigma*power(1-a,0.5);
randomize;
r:=random-0.5;
xu:=a*xu+b*r;
xt:=xu;
end;
////////////////////////////////////////////////////////////
function h1(u:real):real; //h1(u)
var
ppp,r:real;
begin
ppp:=1/(1+alpha*u-(r/2));
h1:=ppp;
//form1.memo1.lines.add(floattostr(ppp));
end;
////////////////////////////////////////////////////////////
function h(x:real):real; {h(u)}
var
kn:real;
begin
kn:=1/integr(th,1);
kn:=kn*h1(x); //h(u)=kn*h1(u)
h:=kn;
end;
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
function integr(t:real;k:integer):real; {âû÷èñëåíèå èíòåãðàëà}
var
ni,xn,xk,s,h,e,l1,l2,k_n,x:real;
{st,st1:string; }
i:integer;
funct:real;
label a2,a1,f1,f2,ff;
begin
xk:=t;
xn:=0;
e:=0.0000001;
ni:=75;
l1:=0;l2:=0;
a2:
h:=(tx+th)/(ny-1);
s:=0;
x:=xn+h/2;
while x<xk-h/2 do
begin
If k=1 {âûáîð ôóíêöèè äëÿ èíòåãðèðîâàíèÿ}
then
s:=s+h1(x);
x:=x+h;
end;
If k=1
then
l1:=h*((h1(xn)+h1(xk))/2+s);
if abs(l2-l1)>=e
then begin l2:=L1;ni:=ni*2;goto a2 end;
integr:=l1;
//form1.memo1.lines.add(floattostr(l1));
//form1.memo1.lines.add(floattostrf(xu,ffFixed,6,4));
end;
////////////////////////////////////////////////////////////
procedure TForm1.BitBtn1Click(Sender: TObject);
var
n:integer;
p:real;
begin
alpha:=strtofloat(edit1.text);
betta:=strtofloat(edit2.text);
sigma:=strtofloat(edit3.text);
th:=strtofloat(edit4.text);
tx:=strtofloat(edit5.text);
ny:=strtofloat(edit6.text);
delta:=(tx+th)/(ny-1);
form1.Chart1.Series[0].clear;
form1.Chart2.Series[0].clear;
form1.Chart3.Series[0].clear;
randomize;
xu:=random-0.5;
n:=1;
p:=0;
while p<=th+tx do
begin
MI[1,n]:=round(1000*xt);
mh:=round(1000*h(p));
asm
pushad //ñîõðàíÿåì ñîñòîÿíèÿ ðåãèñòðîâ â ñòåê
LEA ESI, MI //ïîëó÷àåì àäðåñ ìàññèâà
ADD ESI, 1200 //ñìåùåíèå íà MI[2,..]
MOV EBX, n
IMUL EBX, 4 //ïîëó÷àåì n äëÿ ñìåùåíèÿ íà MI[2,n]
ADD ESI, EBX
MOV ECX, mh
MOV [ESI], ECX //çàïèñûâàåì mh >> MI[2,n]
popad //âîññòàíàâëèâàåì çíà÷åíèÿ ðåãèñòðîâ
end;
MI[3,n]:=round(MI[1,n]*MI[2,n]);
inc(n);
p:=p+delta;
end;
n:=1;
p:=0;
while p<=th+tx do
begin
form1.Chart1.Series[0].AddXY(p,MI[1,n]/1000);
form1.Chart2.Series[0].AddXY(p,MI[2,n]/1000);
form1.Chart3.Series[0].AddXY(p,MI[3,n]/1000000);
tx1:=inttostr(MI[1,n])+' ';
tx2:=inttostr(MI[2,n])+' ';
tx3:=inttostr(MI[3,n])+' ';
txx.txmas:=tx1+tx2+tx3;
writeln(file1,tx1+tx2+tx3);
blockwrite(fff,txx,1);
inc(n);
p:=p+delta;
end;
closefile(file1);
closefile(fff);
inta:=integr(th+tx,2);
label14.caption:=floattostr(inta/1000000);
end;
end.
|