Показать сообщение отдельно
  #35  
Старый 25.03.2012, 00:20
deniks deniks вне форума
Прохожий
 
Регистрация: 08.03.2012
Сообщения: 25
Репутация: 10
По умолчанию

всю процедуру выложу, и еще скрин программы

Для оси Х строит норм, а для Y не хочет ( выделил жырным )

Наконец-то я догадываюсь что не так. Оно берет макс значение, разбивает на 10 отрезков и их наносит на шкалу, но видать макс знач. не берется



Код:
Procedure BUILD(AA, TT : MASK1; FT: MASK1; wob11, w : real);

Function Max(var p: mask1):single;
                var mk:single;
                  begin
                mk:=P[1];
              For i:=2 to k do
         if p[i]>mk then mk:=p[i];
               Max:=mk;
                 end;
Function Min(var pp: mask1): single;
                var mmk:single;
                  begin
               mmk:=PP[1];
              For i:=2 to k do
         if pp[i] < mmk then mmk:=pp[i];
               Min:=mmk;
                 end;
     var Fg: maskdd;
        fgr, AMIN,Amax,Fmaxx : real;
          a1,t1: mas3;kf,k1: integer;
begin
   if w=2 then
   begin
Amin:=Min(aa);
if Amin <= 0 then
begin
for i:=1 to k do
aa[i]:=aa[i]+abs(Amin);
end
else  begin
for i:=1 to k do
aa[i]:=aa[i];
end;
          Fmaxx:=tt[k];
          Amax := Max(aa);
           end;

          if w=1 then begin
          Fmaxx:=1.05*fd;
          Amax := Max(aa);
          end;


                     Xc:=100;
                    Xb:=(form1.Image1.Height div 2);
                  Yc:=420;Yb:=50;
            dlinaOsiX:=500;
          dlinaOsiY:=400;
if Amax>0 then


                  ly:=dlinaOsiY/(1.1*Amax);
                  lx:=dlinaOsiX/Fmaxx*0.9;
form1.Image1.Canvas.moveTo(Xc,Yc);
form1.Image1.Canvas.LineTo(Xc+dlinaOsiX,Yc);
form1.Image1.Canvas.moveTo(Xc,Yc);
form1.Image1.Canvas.LineTo(Xc,Yc-dlinaOsiY);


form1.Image1.Canvas.TextOut(xc-20,yc-dlinaOsiY-10,'A  ');
                if w=2 then
form1.Image1.Canvas.TextOut(xc+dlinaOsiX-10,yc-14,'T,c')
               else
form1.Image1.Canvas.TextOut(xc+dlinaOsiX-5,yc-14,'f,Гц');

                      
{ось X}
                 for i:=0 to 10 do
                   begin
                      t1[i]:=(Fmaxx/10)*i;
                      form1.Image1.Canvas.moveTo(Xc+round(t1[i]*lx),Yc-2);
                      form1.Image1.Canvas.LineTo(Xc+round(t1[i]*lx),Yc+2);
                      if (w=2) then
                      str(t1[i]:2:2,sd)
                      else
                      str(t1[i]:2:0,sd);
                      form1.Image1.Canvas.TextOut(Xc+round(t1[i]*lx),Yc+6,sd);
                  end;

{ось Y}
                        for i:=0 to 10 do
                   begin
                      a1[i]:=(Amax/10)*(i);
                      form1.Image1.Canvas.moveTo(Xc-2,YC-round(a1[i]*ly));
                      form1.Image1.Canvas.LineTo(Xc+2,YC-round(a1[i]*ly));
                      str(a1[i]:2:3,sd1);
                      form1.Image1.Canvas.TextOut(400,YC-round(a1[i]*ly),sd1);
                   end;



if w=2 then
k1:=k;
if (w=1) or (w=3) then
k1:=round(fd*1.05/f[1]);

form1.Image1.Canvas.moveTo(Xc + round(tt[1]*lx),Yc-round(aa[1]*ly));
                for i:=2 to k1 do
                 begin
                      form1.Image1.Canvas.pen.Color:=clGreen;
                      form1.Image1.Canvas.LineTo(Xc + round(tt[i]*lx),Yc-round(aa[i]*ly));
                 end;


               End;
Ответить с цитированием