土问题一个 - 能否在程序中给结构体整体赋值?(30分)

  • 主题发起人 主题发起人 VictorWoo
  • 开始时间 开始时间
V

VictorWoo

Unregistered / Unconfirmed
GUEST, unregistred user!
能否在程序中给结构体整体赋值?
在常量初始化的时候可以做到。在程序中怎么写都不对-_-
比如MyRec := (ID: 1
Name:'qq')
 
可以啊。
implementation

{$R *.dfm}
type
TEnemy= record
f: Integer
{ Frame No }
c: string
{ Class }
x: Integer
{ X }
y: Integer
{ Y }
end;
var
Enemy:TEnemy=(f:1;c:'xxxx';x:1;y:1);

end.
 
这是Classes.pas中的函数,生成一个TPoint结构:
function Point(AX, AY: Integer): TPoint;
begin
with Result do
begin
X := AX;
Y := AY;
end;
end;

要在过程中整体生成Record,如法炮制即可。如果要整体改变Record变量的值,只要写一
个类似这样的函数即可:
procedure ChangePoint(var MyPoint: TPoint
AX, AY: Integer);
 
to 蓝叶菱,谢谢你的回答,我是希望在函数中改变record的值,例如
implementation

{$R *.dfm}
type
TEnemy= record
f: Integer
{ Frame No }
c: string
{ Class }
x: Integer
{ X }
y: Integer
{ Y }
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Enemy:TEnemy;
begin
Enemy:=(f:1;c:'xxxx';x:1;y:1);
end;

提示:
[Error] Unit1.pas(37): Undeclared identifier: 'f'
如果在函数var里申明f,c,x,y等变量,则提示:
[Error] Unit1.pas(41): ')' expected but ':' found

creation-zy的没话说了,连borland都这样写。不过钻一下牛角尖,到底能不能写在一行上?不行也罢, 得到正确答案就结帖^^
 
function ChangeEnemy(Af,Ax,Ay: Integer;Ac:String): Enemy;
begin
with Result do
begin
f := Af;
x := Ax;
y := Ay;
c := Ac;
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
Enemy:TEnemy;
begin
Enemy:=ChangeEnemy(1,1,1,'xxxx');
end;
 
呵呵,用函数的方法也是在一行中搞定的啊——而且还不用一个一个的写变量名,更方便:P
 
简单的问题折腾了俺一上午,楼主的意思俺明白,但好像在D中不支持楼主想要的意思,我也试过,
const
aaa1: Taaa = (xx:10
yy:'中华人民共和国');
var
aaa2: Taaa = (xx:10
yy:'中华人民共和国');
定义常量和全局变量初始化都行,但赋值语句就是不行,看来是此路不通。
 
procedure TForm1.FormCreate(Sender: TObject);
var
Enemy:TEnemy;
begin
Enemy.f:=1;
Enemy.c:='xxxx';
Enemy.x:=1;
Enemy.y:=1;
end;
 
谢谢大家的关注
尤其感谢fjw,虽没有给出我期望的答案,但是折腾了你这么长时间,不好意思。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部