如何将RECORD类型定义动态数组,如何将一个RECORD类型赋值给另一个RECORD数组赋值?(100分)

  • 主题发起人 主题发起人 Rafe
  • 开始时间 开始时间
R

Rafe

Unregistered / Unconfirmed
GUEST, unregistred user!
如题·!
Type
aStruc:record
i:integer;
str:string;
end;
myaStruc:array of boolean;
bStruc:record
i:integer;
str:string;
end;
mybStru:TbStruc;
程序中将bStruc中字段赋值勤,如何将bStruc中内容循环赋值给aSstruc结构数组赋值啊??
 
Record中的String,一般要指定长度的。
 
procedure TForm1.Button2Click(Sender: TObject);
type
MyRecord = record
para1: string;
para2: Integer;
end;
var
_F1, _F2: MyRecord;
begin
_F1.para1 := 'keke';
_F1.para2 := 123;

_F2 := _F1;

showmessage(_F2.para1 + '--' + IntToStr(_F2.para2));
end;
 
TO _Murray
如果_F2是动态数组的RECORD类型,能进行赋值吗?
能修改成我下面的例子出来?我测试不能通过,请批出错误的地方,谢谢!
procedure TForm1.Button2Click(Sender: TObject);
type
MyRecord = record
para1: string;
para2: Integer;
end;
var
_F2:array [1..20] of MyRecord;
_F1: MyRecord;
begin
_F1.para1 := 'keke';
_F1.para2 := 123;

_F2[0]:= _F1;

showmessage(_F2.para1 + '--' + IntToStr(_F2.para2));
end;
 
aStruc1 : Array of aStruc;

setlength(aStruc1, len);
aStruc1 := bStruc;
 
如果是数组的话就不行了,要用循环FU值才可以
 
数组赋值是值运算
 
怎么循环啊?我从0开始赋值给第一个不行吗?
 
从0 开始一个一个赋值就可以了.
 
我已经测试通过了。
procedure TForm1.Button2Click(Sender: TObject);
type
MyRecord = record
para1: string;
para2: Integer;
end;
var
_F2:array [1..20] of MyRecord;
_F1: MyRecord;
i:integer;
begin
_F1.para1 := 'adadkeke';
_F1.para2 := 323123;
for i:=1 to 20 do
_F2:=myRecord(pointer(@_F1)^);
showmessage(_F2[2].para1 + '--' + IntToStr(_F2[2].para2));
end;
 
还有一个小问题,如果定义
para3:char;
如何将字符型赋值给para3呢?
 
procedure TForm1.Button2Click(Sender: TObject);
type
MyRecord = record
para1: string;
para2: Integer;
end;
var
_F2:array [1..20] of MyRecord;
_F1: MyRecord;
i:integer;
begin
_F1.para1 := 'adadkeke';
_F1.para2 := 323123;
for i:=1 to 20 do
_F2:=F1;////^^直接这样就可以了
showmessage(_F2[2].para1 + '--' + IntToStr(_F2[2].para2));
end;
 
procedure TForm1.Button2Click(Sender: TObject);
type
MyRecord = record
para1: string;
para2: Integer;
para3:char;
end;
var
_F2:array [1..20] of MyRecord;
_F1: MyRecord;
i:integer;
begin
_F1.para1 := 'adadkeke';
_F1.para2 := 323123;
_F1.para3 := 'c';
for i:=1 to 20 do
_F2:=F1;////^^直接这样就可以了
showmessage(_F2[2].para1 + '--' + IntToStr(_F2[2].para2));
end;
 
_F2:=_F1;////^^直接这样就可以了

是的,没错啊!!谢谢。但para3不是直接赋值意思,例如:
str:='R';
我想_F1.para3 :=str /////////这样不行啊??
 
朋友,再进来一直啊
 
可以,但你那个str变量必须是char类型的
 
没有转换函数吗?还有刚才那个数组,是不是一定要循环吗?能不能一个一个RECORD赋值进去呢??
 
如果是string的话也可以.比如
var
str : string
ch : char;
begin
str := 'abc';
ch := str[1];
end;

应该是要循环才可以
 
接受答案了.
 

Similar threads

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