d2010编译d6程序时报“left side cannot be assigned to”?

zhangting241 2010-06-12 09:35:40
各位:用d6编程正常的程序在d2010编译时报了很多left side cannot be assigned to,如何解决?
...全文
137 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangting241 2010-06-12
  • 打赏
  • 举报
回复
谢谢楼上,给分了
hsmserver 2010-06-12
  • 打赏
  • 举报
回复
类不要用记录做属性,用类或其他方式解决
zhangting241 2010-06-12
  • 打赏
  • 举报
回复
unit FunPanel;

interface

uses
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;

implementation

uses 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;
以及后面类似部分
zhangting241 2010-06-12
  • 打赏
  • 举报
回复
程序
unit DlgImpedence;

interface

uses
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;

implementation

uses 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.


vivai2010 2010-06-12
  • 打赏
  • 举报
回复
估计是只读属性赋值了
merrymin 2010-06-12
  • 打赏
  • 举报
回复
看看程序中“xx := yy”的部分,问题多半就在那里
musa2008 2010-06-12
  • 打赏
  • 举报
回复
代码贴出来看看,要不怎么分析
hfCoder 2010-06-12
  • 打赏
  • 举报
回复
u p

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧