各位:用d6编程正常的程序在d2010编译时报了很多left side cannot be assigned to,如何解决?

解决方案 »

  1.   

    看看程序中“xx := yy”的部分,问题多半就在那里
      

  2.   

    程序
    unit DlgImpedence;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, ComCtrls, FunPanel, Buttons, PI_Analyze_WaveShow,
      IniFiles;type
      TImpefrm = class(TForm)
        pcSetting: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        TabSheet3: TTabSheet;
        Label39: TLabel;
        Panel11: TPanel;
        Label76: TLabel;
        edtZzd: TEdit;
        Label77: TLabel;
        Label79: TLabel;
        edtZGene: TEdit;
        Label78: TLabel;
        Label80: TLabel;
        Label83: TLabel;
        edtADelta: TEdit;
        edtZAngle2: TEdit;
        Label81: TLabel;
        Label82: TLabel;
        Label84: TLabel;
        edtGrid2: TEdit;
        Label85: TLabel;
        Label43: TLabel;
        edtRdz: TEdit;
        Label55: TLabel;
        edtRpy: TEdit;
        Label63: TLabel;
        Label66: TLabel;
        Label67: TLabel;
        Label68: TLabel;
        edtGrid1: TEdit;
        edtXpy: TEdit;
        Label65: TLabel;
        Label64: TLabel;
        Label58: TLabel;
        edtZAngle1: TEdit;
        edtXdz: TEdit;
        Label57: TLabel;
        Label56: TLabel;
        Label62: TLabel;
        Label69: TLabel;
        edtPs1: TEdit;
        Label70: TLabel;
        Label71: TLabel;
        edtKR: TEdit;
        Label72: TLabel;
        edtKX: TEdit;
        Label91: TLabel;
        edtXst: TEdit;
        Label98: TLabel;
        Label99: TLabel;
        edtGrid3: TEdit;
        Label100: TLabel;
        Label97: TLabel;
        edtXd: TEdit;
        Label92: TLabel;
        Label93: TLabel;
        edtXdd: TEdit;
        Label96: TLabel;
        Label95: TLabel;
        edtAngle3: TEdit;
        Label94: TLabel;
        Button1: TButton;
        Button2: TButton;
        TabSheet4: TTabSheet;
        TabSheet5: TTabSheet;
        Label17: TLabel;
        Label16: TLabel;
        edtDMin: TEdit;
        edtZMin: TEdit;
        Label14: TLabel;
        Label15: TLabel;
        Label13: TLabel;
        Label4: TLabel;
        edtGrid4: TEdit;
        edtKzd: TEdit;
        Label5: TLabel;
        Label7: TLabel;
        edtAMax: TEdit;
        Label8: TLabel;
        Label9: TLabel;
        edtVoltage: TEdit;
        Label11: TLabel;
        Label12: TLabel;
        edtCurrent: TEdit;
        Label10: TLabel;
        Label18: TLabel;
        edtAMin: TEdit;
        Label19: TLabel;
        Label20: TLabel;
        Label21: TLabel;
        edtGrid5: TEdit;
        edtASense: TEdit;
        Label22: TLabel;
        Label23: TLabel;
        Panel5: TPanel;
        Label2: TLabel;
        Panel1: TPanel;
        Label1: TLabel;
        Panel2: TPanel;
        Label3: TLabel;
        Panel3: TPanel;
        procedure edtRdzChange(Sender: TObject);
        procedure edtRdzKeyPress(Sender: TObject; var Key: Char);
        procedure edtZzdChange(Sender: TObject);
        procedure edtXstChange(Sender: TObject);
        procedure edtGrid4Change(Sender: TObject);
        procedure edtGrid5Change(Sender: TObject);
        procedure pcSettingChange(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormCreate(Sender: TObject);
        procedure edtAMaxKeyPress(Sender: TObject; var Key: Char);
      private
        { Private declarations }
        FFunPanel: array[0..2] of TFunPanel;
        function GetFunPanel(index: integer): TFunPanel;
        procedure SetFunPanel(index: integer; const v: TFunPanel);
      public
        { Public declarations }
        property FunPanel[index: integer]: TFunPanel read GetFunPanel write SetFunPanel;
      end;var
      Impefrm: TImpefrm;implementationuses SelectDialog, EngUtils, TrackDialog;{$R *.dfm}{ TImpefrm }procedure TImpefrm.edtRdzChange(Sender: TObject);
    var fTmp: double;
    begin
      if FunPanel[0]=nil then Exit;
      try
        fTmp := StrToFloat(TEdit(Sender).Text);
        with FunPanel[0].ZRectangle do
        begin
          case TEdit(Sender).Tag of
            1: Rdz    := fTmp;
            2: Xdz    := fTmp;
            3: Rpy    := fTmp;
            4: Xpy    := fTmp;
            5: ZAngle := fTmp;
            6: ZGrid  := fTmp;
          end;
          FunPanel[0].Invalidate;
        end;
      except
      end;
    end;procedure TImpefrm.edtRdzKeyPress(Sender: TObject; var Key: Char);
    begin
      if not (Key in ['0'..'9', '.', Char(VK_BACK)]) then
        Key := #0;
    end;procedure TImpefrm.edtZzdChange(Sender: TObject);
    var fTmp: double;
    begin
      if FunPanel[0]=nil then Exit;
      try
        fTmp := StrToFloat(TEdit(Sender).Text);
        with FunPanel[0].ZRound do
        begin
          case TEdit(Sender).Tag of
            1: Zzd := fTmp;
            2: ZAngle := fTmp;
            3: ZGene   := fTmp;
            4: ZGrid := fTmp;
            5: ADelta := fTmp;
          end;
          FunPanel[0].Invalidate;
        end;
      except
      end;
    end;procedure TImpefrm.edtXstChange(Sender: TObject);
    var fTmp: double;
    begin
      if FunPanel[0]=nil then Exit;
      try
        fTmp := StrToFloat(TEdit(Sender).Text);
        with FunPanel[0].ZAsyn do
        begin
          case TEdit(Sender).Tag of
            1: Xst    := fTmp;
            2: Xd     := fTmp;
            3: Xdd    := fTmp;
            4: ZAngle := fTmp;
            5: ZGrid  := fTmp;
          end;
          FunPanel[0].Invalidate;
        end;
      except
      end;
    end;function TImpefrm.GetFunPanel(index: integer): TFunPanel;
    begin
      Result := FFunPanel[index];
    end;procedure TImpefrm.SetFunPanel(index: integer; const v: TFunPanel);
    begin
      if v<>nil then
        FFunPanel[index] := v;
    end;procedure TImpefrm.edtGrid4Change(Sender: TObject);
    var fTmp: Double;
    begin
      if FunPanel[1]=nil then Exit;
      try
        fTmp := StrToFloat(TEdit(Sender).Text);
        if fTmp < 0.00001 then Exit;
        with FunPanel[1].Diff do
        begin
          case TEdit(Sender).Tag of
            1: DMin := fTmp;
            2: ZMin := fTmp;
            3: Kzd  := fTmp;
            4: IGrid := fTmp;
          end;
          FunPanel[1].Invalidate;
        end;
      except
      end;
    end;procedure TImpefrm.edtGrid5Change(Sender: TObject);
    var fTmp: Double;
    begin
      if FunPanel[2]=nil then Exit;
      try
        fTmp := StrToFloat(TEdit(Sender).Text);
        if Abs(fTmp) < 0.00001 then Exit;
        with FunPanel[2].Dire do
        begin
          case TEdit(Sender).Tag of
            1: AMax := fTmp;
            2: AMin := fTmp;
            3: ASense  := fTmp;
            4: AGrid := fTmp;
          end;
          FunPanel[2].Invalidate;
        end;
      except
      end;
    end;procedure TImpefrm.pcSettingChange(Sender: TObject);
    begin
      case pcSetting.ActivePageIndex of
        0: FunPanel[0].FunStyle := fsRectangle;
        1: FunPanel[0].FunStyle := fsRound;
        2: FunPanel[0].FunStyle := fsAsyn;
      end;
    end;procedure TImpefrm.FormClose(Sender: TObject; var Action: TCloseAction);
    var sTmp: string;
    begin
      with TInifile.Create(ExtractFilePath(ParamStr(0))+IniName) do
      try
        begin
          sTmp := 'Im_Rectangle';
          WriteString(sTmp, 'KX', edtKX.Text);
          WriteString(sTmp, 'KR', edtKR.Text);
          WriteString(sTmp, 'Ps1', edtPs1.Text);
          sTmp := 'Im_Dire';
          WriteString(sTmp, 'Voltage', edtVoltage.Text);
          WriteString(sTmp, 'Current', edtCurrent.Text);      sTmp := 'Im_Rectangle';
          WriteString(sTmp, 'ZGrid', edtGrid1.Text);
          WriteString(sTmp, 'Rdz', edtRdz.Text);
          WriteString(sTmp, 'Xdz', edtXdz.Text);
          WriteString(sTmp, 'Rpy', edtRpy.Text );
          WriteString(sTmp, 'Xpy', edtXpy.Text);
          WriteString(sTmp, 'ZAngle', edtZAngle1.Text);      sTmp := 'Im_Round';
          WriteString(sTmp, 'ZGrid', edtGrid2.Text);
          WriteString(sTmp, 'Zzd', edtZzd.Text);
          WriteString(sTmp, 'ZGene', edtZGene.Text);
          WriteString(sTmp, 'ZAngle', edtZAngle2.Text );
          WriteString(sTmp, 'ADelta', edtADelta.Text);      sTmp := 'Im_Asyn';
          WriteString(sTmp, 'ZGrid', edtGrid3.Text);
          WriteString(sTmp, 'Xst', edtXst.Text);
          WriteString(sTmp, 'Xd', edtXd.Text);
          WriteString(sTmp, 'Xdd', edtXdd.Text );
          WriteString(sTmp, 'ZAngle', edtAngle3.Text);      sTmp := 'Im_Diff';
          WriteString(sTmp, 'IGrid', edtGrid4.Text);
          WriteString(sTmp, 'DMin', edtDMin.Text);
          WriteString(sTmp, 'ZMin', edtZMin.Text);
          WriteString(sTmp, 'Kzd', edtKzd.Text);
          sTmp := 'Im_Dire';
          WriteString(sTmp, 'AGrid', edtGrid5.Text);
          WriteString(sTmp, 'AMax', edtAMax.Text);
          WriteString(sTmp, 'AMin', edtAMin.Text);
          WriteString(sTmp, 'ASense', edtASense.Text );
        end;
      finally
        Free;
      end;
    end;procedure TImpefrm.FormCreate(Sender: TObject);
    var sTmp: string;
    begin
      with TInifile.Create(ExtractFilePath(ParamStr(0))+IniName) do
      try
        begin
          sTmp := 'Im_Rectangle';
          edtKX.Text := ReadString(sTmp, 'KX', '0');
          edtKR.Text := ReadString(sTmp, 'KR', '0');
          edtPs1.Text := ReadString(sTmp, 'Ps1', '90');
          sTmp := 'Im_Dire';
          edtVoltage.Text := ReadString(sTmp, 'Voltage', '1');
          edtCurrent.Text := ReadString(sTmp, 'Current', '1');
        end;
      finally
        Free;
      end;
    end;procedure TImpefrm.edtAMaxKeyPress(Sender: TObject; var Key: Char);
    begin
      if not (Key in ['0'..'9', '.', '-', Char(VK_BACK)]) then
        Key := #0;
    end;end.
      

  3.   

    unit FunPanel;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, ExtCtrls,
      Math, Clipbrd;const Margin = 2;type
      TTrackStyle = (tsDot, tsLine);
      TFunStyle = (fsVector, fsRectangle, fsRound, fsAsyn, fsDiff, fsDirect);  TZRound = record           
        ZGrid, Zzd, ZGene, ZAngle, ADelta: double;
      end;  TZRectangle = record       
        ZGrid, Rdz, Xdz, Rpy, Xpy, ZAngle: double;
      end;  TZAsyn = record            
        ZGrid, Xst, Xd, Xdd, ZAngle: double;
      end;  TDiff = record
        DMin, ZMin, Kzd, IGrid: double;
      end;  TDire = record
        AMax, AMin, ASense, AGrid: double;
      end;  TVect = Record
        vName: string[20];
        Color: TColor;
        bShow: Boolean;
        val,
        ang: pDouble;
        rate,                       // 比例系数,用来调整矢量的长度
        MaxReal: double;            // 设置矢量基准时使用
      end;  TImTrack = record
        mShow: Boolean;
        mColor: TColor;
      end;  TFunPanel = class(TCustomPanel)
      private
        FCounter: integer;
        FZBool1: Boolean;             
        FZBool2: Boolean;             
        FTrackStyle: TTrackStyle;     
        FZRound: TZRound;            
        FZRectangle: TZRectangle;     
        FZAsyn: TZAsyn;               
        FDiff: TDiff;                 
        FDire: TDire;                
        FFunStyle: TFunStyle;      
        FMGrid,                     
        FBorderWidth: integer;    
        FBKColor,                    
        FDotColor,                    // 轨迹点色
        FBarColor,                    // 栅格色
        FAxisColor,                   // 特性线色
        FCoordinateColor,             // 坐标轴色
        FTrackColor: TColor;          // 轨迹色
        FCenterOffset: TPoint;        // 圆心偏移量    procedure SetZRound(v: TZRound);
        procedure SetZRectangle(v: TZRectangle);
        procedure SetZAsyn(v: TZAsyn);
        procedure SetFunStyle(v: TFunStyle);
        procedure SetDiff(v: TDiff);
        procedure SetDire(v: TDire);
        procedure SetMGrid(v: integer);
        procedure SetBorderWidth(v: integer);
        procedure SetBKColor(v: TColor);
        procedure SetDotColor(v: TColor);
        procedure SetBarColor(v: TColor);
        procedure SetAxisColor(v: TColor);
        procedure SetCoordinateColor(v: TColor);
        procedure SetTrackColor(v: TColor);
        procedure SetTrackStyle(v: TTrackStyle);
        procedure SetZBool1(b: Boolean);
        procedure SetZBool2(b: Boolean);
        procedure SetCounter(v: integer);
      protected
        wGrid, hGrid: integer;        // 横向、纵向栅格数目
        CtrlPressed: Boolean;
        wGridMax, hGridMax: integer;
        procedure CalGrid;
        procedure Paint; override;
        procedure WMSize(var Message: TWMSize); message WM_SIZE;
        procedure OnMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL;
        procedure OnLDblClk(var msg: TMessage); message WM_LBUTTONDBLCLK;
    //    procedure OnLMouseDown(var msg: TMessage); message WM_LBUTTONDOWN;
    //    procedure OnLMouseUp(var msg: TWmLButtonup); message WM_LBUTTONUP;
        procedure OnMActive(var msg : TMessage); message WM_MOUSEACTIVATE;
        procedure OnArrow(var msg : TMessage); message $bd00;
        procedure OnKeyDown(var msg : TMessage); message WM_KEYDOWN;
        procedure OnKeyUp(var msg : TMessage); message WM_KEYUP;
        function GetAngle(AReal,AImage:Real): Real;
        function GetGrid: double;     // 获得当前模式下的每格阻抗数
        function GetCenter: TPoint;   // 获得圆心坐标
        procedure DrawZRound;         
        procedure DrawZRectangel;     
        procedure DrawZAsyn;          
        procedure DrawZCoordinate(iType: integer = 0);    // 坐标轴
        procedure DrawImpedence(i: integer);      
        procedure DrawVectors;        // 矢量图
        procedure DrawDiff;           
        procedure DrawDirect;         
        procedure DrawVector(Real_Part, Imag_Part, Ang, fRate: double;
            buf: string; c: TColor);  // 单个矢量
        procedure AdjustTrack(OldCenter, NewCenter: TPoint;
            OldMGrid, NewMGrid: integer);
      public
        iFixed,                       // 矢量基准索引, 0-无索引
        iCurrent,                     // 曲线点索引
        MaxRadioInteger:integer;      //
        MaxRadioReal: double;
        Vectors: array of TVect;      // 矢量曲线信息数组
        D_Points: array of TPoint;
        I_Points: array[0..5] of array of TPoint;
        E_Points: array of TPoint;
        ImTracks: array[0..5] of TImTrack;  
        Z_Name: string;
        DZ_Cur, ZD_Cur: double;
        DAng_Cur: double;             // 方向角
        BAng_Cur: Boolean;            // 是否在区内标志
        Z_Real, Z_Imag, Z_Ang: array[0..5] of double;
        bDrawTrack: Boolean;          // 是否绘制轨迹点
        constructor Create (AOwner: TComponent); override;
        destructor Destroy; override;
        procedure FreeVectors;
        procedure ClearDatas;
        procedure DrawZTrack;         
        procedure DrawDTrack(fd, fz: Double);
        procedure DrawETrack(Ang: double);
        procedure CopyClientRect;     // 拷贝区域
        procedure ClearCounter;
        procedure MoveCircleCenter(v: integer);
        property ZBool1: Boolean read FZBool1 write SetZBool1;
        property ZBool2: Boolean read FZBool2 write SetZBool2;
        property Counter: integer read FCounter write SetCounter;
      published
        property Font;
        property Caption;
        property Align;
        property PopupMenu;
        property OnDblClick;
        property BevelOuter;
        property BevelInner;
        property BevelWidth;    property ZRound: TZRound read FZRound write SetZRound;
        property ZRectangle: TZRectangle read FZRectangle write SetZRectangle;
        property ZAsyn: TZAsyn read FZAsyn write SetZAsyn;
        property Diff: TDiff read FDiff write SetDiff;
        property Dire: TDire read FDire write SetDire;
        property FunStyle: TFunStyle read FFunStyle write SetFunStyle;
        property MGrid: integer read FMGrid write SetMGrid;
        property BorderWidth: integer read FBorderWidth write SetBorderWidth;
        property BKColor: TColor read FBKColor write SetBKColor;
        property DotColor: TColor read FDotColor write SetDotColor;
        property BarColor: TColor read FBarColor write SetBarColor;
        property AxisColor: TColor read FAxisColor write SetAxisColor;
        property CoordinateColor: TColor read FCoordinateColor write SetCoordinateColor;
        property TrackColor: TColor read FTrackColor write SetTrackColor;
        property TrackStyle: TTrackStyle read FTrackStyle write SetTrackStyle;
      end;procedure Register;implementationuses Fun_Display;procedure Register;
    begin
      RegisterComponents('WaveAnalyze', [TFunPanel]);
    end;
    。。出错部分:
          with FunPanel[0].ZRound do
        begin
          case TEdit(Sender).Tag of
            1: Zzd := fTmp;
            2: ZAngle := fTmp;
            3: ZGene   := fTmp;
            4: ZGrid := fTmp;
            5: ADelta := fTmp;
    以及后面类似部分