Юнит 1:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
StdCtrls, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Image1: TImage;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem10: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
OpenDialog1: TOpenDialog;
procedure MenuItem4Click(Sender: TObject);
procedure OpenDialog1CanClose(Sender: TObject; var CanClose: boolean);
procedure draw;
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses unit2;
{$R *.lfm}
{ TForm1 }
procedure TForm1.MenuItem4Click(Sender: TObject);
begin
OpenDialog1.Execute;
end;
procedure TForm1.OpenDialog1CanClose(Sender: TObject; var CanClose: boolean);
begin
readdata(opendialog1.FileName);
draw;
end;
procedure TForm1.draw ;
var i,x0,y0,x01,y01: integer ;
x1,y1,x2,y2,Sx,Hx,Sy,Hy,Xmin,Xmax,a,b : real;
begin
image1.Canvas.Brush.Color:=Clsilver;
image1.Canvas.FillRect(image1.BoundsRect);
image1.Canvas.Brush.Color:=clblack;
areal(x,Xmin,Xmax);
scale ( Sx,Hx,Xmin,Xmax,10,image1.Width-10);
areal (y,Xmin,Xmax);
scale (Sy,Hy, Xmin,Xmax,10,image1.Height-10);
for i:=0 to n-1 do
begin
x0:= change(x[i],sx,hx);
y0:=change(y[i],sy,hy);
image1.Canvas.FillRect(x0,y0,x0+5,y0+5);
end;
//regression(a,b);
y1:=a*x1+b;
y2:=a*x2+b;
x0:=change(x1,sx,hx);
y0:=change(y1,sy,hy);
x01:=change(x2,sx,hx);
y01:=change(y2,sy,hy);
Image1.Canvas.Pen.Color:=clblue;
Image1.Canvas.Line(x0,y0,x01,y01);
end;
end.
Юнит 2:
- Код: Выделить всё
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,FileUtil,stdctrls,math;
var x,y:array[0..100] of real ; n: integer;
procedure readdata(name: string);
procedure areal ( m : array of real ; var a,b: real);
Procedure scale (var s, h: real; Xmin,Xmax,X1min,X1max:real);
function change(x,s,h:real): integer;
implementation
procedure areal ( m : array of real ; var a,b: real);
var i: integer;
begin
a:=m[0]; b:=a;
for i:=1 to n-1 do begin
a:=min(a,m[i]);
b:=max(a,m[i]);
end;
end;
procedure readdata(name: string);
var f:text;
s:string; i,c:integer;
begin
AssignFile(f,name);
Reset(f);
i:=0;
While not eof(f) do
begin
ReadLn(f,s);
Val(s,x[i],c);
ReadLn(f,s);
Val(s,y[i],c);
Inc(i);
end;
CloseFile(f);
n:=i;
end;
Procedure scale (var s, h: real; Xmin,Xmax,X1min,X1max:real);
begin
S:=(X1max-X1min) / (Xmax-Xmin); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<---Выделяется серым эта строка!!!
H:=X1max-S*Xmax;
end;
function change(x,s,h:real): integer;
begin
change:=ceil(s*x+h)
end;
{procedure regression(var a , b : real);
var
a,b:real;
i,c:integer;}
end.
Добавлено спустя 4 минуты 45 секунд:
ссылка на проект
Padre_Mortius: Для оформления кусков кода используйте тег code. Иначе ваше сообщение читать просто невозможно.