unit MySubs;interfaceuses
   Math, Graphics;
type
  function Power10N(n:INteger):Integer;    //计算10的n次方
  function StandReal(x:Real;n:Integer):Real;     //计算时数保留n位小数的转换结果
  procedure PaintG(PCanvas:TCanvas;a,b,c:Integer);   //在画布上画出一元二次方程的图形
 end;implementation  function Power10N(n:INteger):Integer;
  var
    i:Integer;
    Result:=1;
    for i:=1 to n do
      Result:=Result*10;
  end;  function StandReal(x:Real;n:Integer):Real;
  begin
    Result:=Trunc(Abs(x)*Power10N(n)+0.5)/Power10N(n)*Sign(x);
  end;  procedure PaintG(PCanvas:TCanvas;a,b,c:Integer);
  var
    x,y,first:Integer;
  begin
   PCanvas.Pen.Color:=clRed; //用红色画坐标线和坐标值
   PCanvas.MoveTo(10,210);
   PCanvas.LineTo(410,210);
   PCanvas.MoveTo(210,10);
   PCanvas.LineTo(210,410);
   PCanvas.TextOut(220,10,'200');
   PCanvas.TextOut(220,400,'-200');
   PCanvas.TextOut(10,220,'-50');
   PCanvas.TextOut(400,220,'50');
   PCanvas.Pen.Color:=clBlue;   //用蓝线画函数曲线
   first:=0;
   for x:=-50 to 50 do begin
      y:=a*Sqr(x)+b*x+c;
      if Abs(y)<200 then
        first:=first+1;
      else
        first:=0;
      if first=1 then
        PCanvas.MoveTo(4*x+210,210-y);
      if first=1 then
        PCanvas.LineTo(4*x+210,210-y);
   end;
  end;
end.

解决方案 »

  1.   

    type
    ...
    end;1.type和end去掉var
      i:Integer;
    begin
      Result:=1;2.少了beginif Abs(y)<200 then
      first:=first+1;
      else
      first:=0;3.分號去掉
      

  2.   

    这是在编译引用了这个MySubs单元的单元时报的错,原因就是MySubs单元有很多错误改成下面的试试:
    unit MySubs;interfaceuses
      Math, Graphics;
    //type
      function Power10N(n:INteger):Integer; //计算10的n次方
      function StandReal(x:Real;n:Integer):Real; //计算时数保留n位小数的转换结果
      procedure PaintG(PCanvas:TCanvas;a,b,c:Integer); //在画布上画出一元二次方程的图形
     //end;implementation  function Power10N(n:INteger):Integer;
      var
      i:Integer;
      begin
      Result:=1;
      for i:=1 to n do
      Result:=Result*10;
      end;  function StandReal(x:Real;n:Integer):Real;
      begin
      Result:=Trunc(Abs(x)*Power10N(n)+0.5)/Power10N(n)*Sign(x);
      end;  procedure PaintG(PCanvas:TCanvas;a,b,c:Integer);
      var
      x,y,first:Integer;
      begin
      PCanvas.Pen.Color:=clRed; //用红色画坐标线和坐标值
      PCanvas.MoveTo(10,210);
      PCanvas.LineTo(410,210);
      PCanvas.MoveTo(210,10);
      PCanvas.LineTo(210,410);
      PCanvas.TextOut(220,10,'200');
      PCanvas.TextOut(220,400,'-200');
      PCanvas.TextOut(10,220,'-50');
      PCanvas.TextOut(400,220,'50');
      PCanvas.Pen.Color:=clBlue; //用蓝线画函数曲线
      first:=0;
      for x:=-50 to 50 do begin
      y:=a*Sqr(x)+b*x+c;
      if Abs(y)<200 then
      first:=first+1
      else
      first:=0;
      if first=1 then
      PCanvas.MoveTo(4*x+210,210-y);
      if first=1 then
      PCanvas.LineTo(4*x+210,210-y);
      end;
      end;
    end.
      

  3.   

    改了,还是想同的问题
    unit MySubs;interfaceuses
       Math, Graphics;  function Power10N(n:INteger):Integer;    //计算10的n次方
      function StandReal(x:Real;n:Integer):Real;     //计算时数保留n位小数的转换结果
      procedure PaintG(PCanvas:TCanvas;a,b,c:Integer);   //在画布上画出一元二次方程的图形
    implementation  function Power10N(n:INteger):Integer;
      var
        i:Integer;
      begin
        Result:=1;
        for i:=1 to n do
          Result:=Result*10;
      end;  function StandReal(x:Real;n:Integer):Real;
      begin
        Result:=Trunc(Abs(x)*Power10N(n)+0.5)/Power10N(n)*Sign(x);
      end;  procedure PaintG(PCanvas:TCanvas;a,b,c:Integer);
      var
        x,y,first:Integer;
      begin
       PCanvas.Pen.Color:=clRed; //用红色画坐标线和坐标值
       PCanvas.MoveTo(10,210);
       PCanvas.LineTo(410,210);
       PCanvas.MoveTo(210,10);
       PCanvas.LineTo(210,410);
       PCanvas.TextOut(220,10,'200');
       PCanvas.TextOut(220,400,'-200');
       PCanvas.TextOut(10,220,'-50');
       PCanvas.TextOut(400,220,'50');
       PCanvas.Pen.Color:=clBlue;   //用蓝线画函数曲线
       first:=0;
       for x:=-50 to 50 do begin
          y:=a*Sqr(x)+b*x+c;
          if Abs(y)<200 then
            first:=first+1
          else
            first:=0;
          if first=1 then
            PCanvas.MoveTo(4*x+210,210-y);
          if first=1 then
            PCanvas.LineTo(4*x+210,210-y);
       end;
      end;
    end.
      

  4.   

    Could not compile used unit后面的也是'MySubs.pas'?
      

  5.   

    我重新开了一下Delphi这个问题没有了
      

  6.   

    你是Delphi几?我这边Delphi2007不存在此问题。
      

  7.   

    但是运行的时候出了问题
    Project Project1.exe raised exception class EInvalidOperation with message 'Cannot focus a disabled or invisible window'.Process stopped.Use Step or Run to continue.
      

  8.   

    那是什么问题  我是新学的 自学的   我把所有代码贴出来
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ExtCtrls;type
      TfrmMain = class(TForm)
        pnlPaint: TPanel;
        pnlSet: TPanel;
        pbResult: TPaintBox;
        pnlTop: TPanel;
        pnlBottom: TPanel;
        gbA: TGroupBox;
        EdtA: TEdit;
        gbB: TGroupBox;
        EdtB: TEdit;
        gbC: TGroupBox;
        EdtC: TEdit;
        cbRandom: TCheckBox;
        btnProject: TButton;
        btnCalc: TButton;
        gbPoint: TGroupBox;
        edtNum: TEdit;
        udNum: TUpDown;
        lblDescription: TLabel;
        lblX1: TLabel;
        lblX2: TLabel;
        procedure FormActivate(Sender: TObject);
        procedure btnProjectClick(Sender: TObject);
        procedure btnCalcClick(Sender: TObject);
        procedure udNumClick(Sender: TObject; Button: TUDBtnType);
      private
        { Private declarations }
        a,b,c:Integer;    //保存一元二次方程系数
        BITS:SmallInt;    //
      public
        { Public declarations }
      end;var
      frmMain: TfrmMain;implementationuses MySubs;{$R *.dfm}procedure TfrmMain.FormActivate(Sender: TObject);
    begin
      btnProject.SetFocus;  //将输入焦点设置到出题按钮上
      Randomize;  //初始化随机数发生器
      BITS:=3;    //设定结果值的小数位数
    end;procedure TfrmMain.btnProjectClick(Sender: TObject);
    begin
      pbResult.Canvas.FillRect(ClientRect);  //清除画布
      lblDescription.Caption:='';  //清除输出的结果
      lblX1.Caption:='';
      lblX2.Caption:='';
      if cbRandom.Checked then begin
        a:=Random(50)-Random(50);
        b:=Random(100)-Random(100);
        c:=Random(200)-Random(200);
        edtA.Text:=IntToStr(a);
        edtB.Text:=IntToStr(b);
        edtC.Text:=IntToStr(c);
      end
      else begin
       a:=StrToInt(edtA.Text);
       b:=StrToInt(edtB.Text);
       c:=StrToInt(edtC.Text);
      end;
      PaintG(pbResult.Canvas,a,b,c);  //调用画图过程画出做标及函数曲线
      btnProject.Enabled:=false;   //切换状态按钮
      btnCalc.Enabled:=true;
      btnCalc.SetFocus;
      cbRandom.Enabled:=false;
    end;procedure TfrmMain.btnCalcClick(Sender: TObject);
    var
     delta,m,n:real;
    begin
      if a<>0 then begin
        delta:=b*b-4*a*c;
        m:=-b/(2*a);
        if delta>=0 then
         if delta>0 then begin
           n:=Sqrt(delta)/(2*a);
           lblDescription.Caption:='两个不相等实根';
           lblX1.Caption:=FloatToStr(StandReal((m+n),BITS));
           lblX2.Caption:=FloatToStr(StandReal((m-n),BITS));
          end
          else begin
           lblDescription.Caption:='两个相等实根';
           lblX1.Caption:=FloatToStr(StandReal(m,BITS));
          end
        else begin
            n:=Sqrt(-delta)/(2*a);
            lblDescription.Caption:='两个不相等复根';
            m:=(StandReal(m,BITS));
            n:=(StandReal(n,BITS));
            lblX1.Caption:=FloatToStr(m)+'+'+FloatToStr(Abs(n))+'i';
            lblX2.Caption:=FloatToStr(m)+'-'+FloatToStr(Abs(n))+'i';
         end;
       end
       else
         if b<>0 then begin
            m:=-c/b;
            lblDescription.Caption:='一个实根';
            lblX1.Caption:=FloatToStr(StandReal(m,BITS));
        end
        else
          if c=0 then
             lblDescription.Caption:='无穷实根'
          else
             lblDescription.Caption:='无解';
        btnProject.Enabled:=true;   //切换状态按钮
        btnCalc.Enabled:=false;
        btnCalc.SetFocus;
        cbRandom.Enabled :=true;
      end;procedure TfrmMain.udNumClick(Sender: TObject; Button: TUDBtnType);
    begin
      BITS:=udNum.Position;
    end;end.
      

  9.   

    把btnProject.SetFocus注释掉试试?