Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TForm2.Button2Click(Sender: TObject);
- begin
- if OpenDialog1.Execute then
- begin
- Assignfile(t, opendialog1.filename);
- reset(t);
- while not eof(t) do
- begin
- readln(t,ss);
- memo2.Lines.add(ss);
- end;//whileeof
- end;//if
- end;//proc
- procedure TForm2.N4Click(Sender: TObject);
- begin
- panel2.Visible:=true;
- end;
- procedure TForm2.Button3Click(Sender: TObject);
- begin
- panel1.visible:=false;
- end;
- procedure TForm2.Button4Click(Sender: TObject);
- begin
- panel2.Visible:=false;
- end;
- procedure TForm2.N6Click(Sender: TObject);
- var g,m,s,vx,vy,xk,yk,fx,fy,summas,alfak,sbeta,sumb,fbeta,vbeta,yn,xn,sumdx, sumdy,dxteor,dyteor,fbetad,gk:real;
- xks,yks,name1,name2:string;
- begin
- StringGrid1.Visible:=true;
- StringGrid1.Cells[0,0]:='N/n';
- StringGrid1.Cells[1,0]:='Beta';
- StringGrid1.Cells[2,0]:='Alfa';
- StringGrid1.Cells[3,0]:='S';
- StringGrid1.Cells[4,0]:='dx';
- StringGrid1.Cells[5,0]:='dy';
- StringGrid1.Cells[6,0]:='Xвыч';
- StringGrid1.Cells[7,0]:='Yвыч';
- if OpenDialog1.Execute then
- begin
- assignfile(t, opendialog1.filename);
- reset(t);
- readln(t,ss);
- stringgrid1.cells[0,1]:=ss;
- readln(t,ss);
- stringgrid1.cells[0,3]:=ss;
- readln(t,x[0]);
- str(x[0]:12:3,ss);
- stringgrid1.cells[6,3]:=ss;
- readln(t,y[0]);
- str(y[0]:12:3,ss);
- stringgrid1.cells[7,3]:=ss;
- readln(t,name1);
- readln(t,name2);
- readln(t,ss);
- xks:=ss;
- readln(t,ss);
- yks:=ss;
- readln(t,g,m,s);
- alfa1[0]:=(g+m/60+s/3600)/180*pi;//стандартное преобразование градусов в радианы
- str(g:4:0, ss);
- str(m:5:0, ss1);
- str(s:6:1, ss2);
- stringgrid1.cells[2,2]:=ss+ss1+ss2;
- readln(t, g,m,s);
- alfak:=(g+m/60+s/3600)/180*pi;//стандартное преобразование градусов в радианы
- readln(t,i);
- sbeta:=0;
- for j:=0 to i-1 do begin
- ;
- if length(beta)<= j then begin
- setlength(beta, length(beta)+1);
- end;// endif
- readln(t,g,m,s);
- beta[j]:=(g+m/60+s/3600)/180*pi;
- str(g:4:0, ss);
- str(m:5:0, ss1);
- str(s:6:1, ss2);
- sbeta:=sbeta+beta[j];
- stringgrid1.cells[1,3+j*2]:=ss+ss1+ss2;
- if stringgrid1.RowCount <= 3+j*2+4 then
- stringgrid1.RowCount:= 3+j*3;
- end;//endfor
- stringgrid1.cells[0,3+(i-1)*2]:=name1;
- stringgrid1.cells[0,3+(i-1)*2+2]:=name2;
- stringgrid1.cells[6,3+(i-1)*2]:=xks;
- stringgrid1.cells[7,3+(i-1)*2]:=yks;
- Form1.rg(alfak);
- stringgrid1.cells[2,3+(i-1)*2+1]:=ss+ss1+ss2;
- Form1.rg(sbeta);
- stringgrid1.cells[1,3+(i-1)*2+3]:=ss+ss1+ss2;
- sumb:=alfak-alfa1[0]+pi*i;
- Form1.rg(sumb);
- stringgrid1.cells[1,3+(i-1)*2+4]:=ss+ss1+ss2;
- fbeta:=sbeta - sumb;
- Form1.rg(fbeta);
- stringgrid1.cells[1,3+(i-1)*2+5]:=ss+ss1+ss2;
- fbetad:=5/3600/180*pi*sqr(i);
- Form1.rg(fbetad);
- stringgrid1.cells[1,3+(i-1)*2+6]:=ss+ss1+ss2;
- if abs(fbeta) > fbetad then begin
- if messagedlg ('Угловая невязка превышает допустимую. Продолжить вычисления?',
- mtConfirmation, [mbYes, mbNo], 0) = mrNo then exit;
- end; // fbeta > fbetad if
- vbeta:=-(fbeta/i);
- for j:=1 to i do begin
- if length(alfa1)<= j then setlength(alfa1,length(alfa1)+1);
- alfa1[j]:=alfa1[j-1] + beta[j-1] + vbeta;
- if alfa1[j]>Pi then alfa1[j]:=alfa1[j]-Pi
- else alfa1[j]:=alfa1[j]+Pi;
- if alfa1[j]>2*pi then alfa1[j]:=alfa1[j]-360;
- Form1.rg(alfa1[j]);
- stringgrid1.cells[2,4+(j-1)*2]:=ss+ss1+ss2;
- end; // for j
- summas:=0;
- for j:=1 to i-1 do begin
- if length(s1) <=j then setlength(s1,length(s1)+1);
- readln(t,s1[j-1]);
- Str(s1[j-1]:12:3,ss);
- summas:=summas+s1[j-1];
- Stringgrid1.cells[3,4+(j-1)*2]:=ss;
- end; // for j;
- Str(summas:12:3,ss);
- Stringgrid1.Cells[3,3+(i-1)*2+3]:=ss;
- dxteor:=xn-x[0];
- dyteor:=yn-y[0];
- Str(dxteor:12:3,ss1);
- Str(dyteor:12:3,ss2);
- Stringgrid1.cells[6,3+(i-1)*2+3]:=ss1;
- Stringgrid1.cells[7,3+(i-1)*2+3]:=ss2;
- sumdx:=0;
- sumdy:=0;
- for j:=1 to i-1 do begin
- if length(dx1) <= j then setLength(dx1, length(dx1)+1);
- if length(dy1) <= j then setLength(dy1, length(dy1)+1);
- dx1[j-1]:=s1[j-1]*cos(alfa1[j]);
- dy1[j-1]:=s1[j-1]*sin(alfa1[j]);
- sumdx:=sumdx+dx1[j-1];
- sumdy:=sumdy+dy1[j-1];
- Str(dx1[j-1]:12:3,ss1);
- Str(dy1[j-1]:12:3,ss2);
- Stringgrid1.cells[4,4+(j-1)*2]:=ss1;
- Stringgrid1.cells[5,4+(j-1)*2]:=ss2;
- if j < i-1 then begin
- Str(j,ss);
- Stringgrid1.cells[0,5+(j-1)*2]:=ss;
- end;
- end;
- Str(sumdx:12:3,ss1);
- str(sumdy:12:3,ss2);
- Stringgrid1.cells[4,3+(j-1)*2+3]:=ss1;
- Stringgrid1.cells[5,3+(j-1)*2+3]:=ss2;
- fx:=sumdx-dxteor;
- fy:=sumdy-dyteor;
- Str(fx:12:3,ss);
- Str(fy:12:3,ss1);
- Stringgrid1.cells[4,3+(j-1)*2+5]:=ss;
- Stringgrid1.cells[5,3+(j-1)*2+5]:=ss1;
- Stringgrid1.cells[4,3+(j-1)*2+4]:='Невязка Х';
- Stringgrid1.cells[5,3+(j-1)*2+4]:='Невязка Y';
- vx:=-fx/summas;
- vy:=-fy/summas;
- Str(vx:12:8,ss1);
- Str(vy:12:8,ss2);
- Stringgrid1.cells[4,3+(j-1)*2+6]:='Поправка X';
- Stringgrid1.cells[5,3+(j-1)*2+6]:='Поправка Y';
- Stringgrid1.cells[4,3+(j-1)*2+7]:=ss1;
- Stringgrid1.cells[5,3+(j-1)*2+7]:=ss2;
- for j:=1 to i-1 do begin
- if length(x) <= j then setLength(x, length(x)+1);
- if length(y) <=j then setLength(y, length(y)+1);
- x[j]:=x[j-1]+dx1[j-1]+vx*s1[j-1];
- y[j]:=y[j-1]+dy1[j-1]+vy*s1[j-1];
- Str(x[j]:12:3,ss1);
- Str(y[j]:12:3,ss2);
- Stringgrid1.cells[6,5+(j-1)*2]:=ss1;
- Stringgrid1.cells[7,5+(j-1)*2]:=ss2;
- end; // j:=1 to i-1
- closefile(t);
- N8.Enabled:=true;
- end;//opendialog
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement