E2029 Delphi :应为“)”,但找到了,“”

ha5z0ras  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(134)

编译员说错了,为什么?

procedure TForm1.Button2Click(Sender: TObject);
Var
   IniOrb, CurOrb : TOrbitData;
   Orb : TOrbitData;
   KepEl: TKepEl;
   Cart: TCartesian;
   Geo: TGeo;
   D, T : TdateTime;
   Epoch : TdateTime;
   Time :  real;
    x, y, xstep : real;
begin
  Dat := Frac( DateTimePicker1.Time );
  Tim := Trunc ( DateTimePicker2.Date );
   Epoch := D + T;
   IniOrb := InitOrbit( Epoch, 1000, 0, 0, 0, 0, 60 * cToRad );
   Time := 60;
   Repeat
      CurOrb := TOrbitData(Time, KepEl, Cart, Geo);
                                                 ^
                                                ')' expected but ',' found

这是一个记录:

type TOrbitData = record  // full orbit data
        Epoch : TDateTime;
        KepEl : TKepEl;
        Cart  : TCartesian;
        Geo   : TGeo;
  end;

分号错误:应为“)”,但“;“找到了,怎么了?

ifmq2ha2

ifmq2ha21#

您无法以尝试的方式建构record的执行严修。
但是,您可以将构造函数添加到record类型中,例如:

type
  TOrbitData = record  // full orbit data
    Epoch : TDateTime;
    KepEl : TKepEl;
    Cart  : TCartesian;
    Geo   : TGeo;

    constructor Create(AEpoch: TDateTime; AKepEl: TKepEl; ACart: TCartesian; AGeo: TGeo);
  end;

constructor TOrbitData.Create(AEpoch: TDateTime; AKepEl: TKepEl; ACart: TCartesian; AGeo: TGeo);
begin
  Epoch := AEpoch;
  KepEl := AKepEl;
  Cart := ACart;
  Geo := AGeo;
end;

然后您可以这样使用它:

CurOrb := TOrbitData.Create(Time, KepEl, Cart, Geo);

否则,就必须定义一个独立函数来返回record的初始化示例,就像InitOrbit()一样。

相关问题