读书人

记录类型变量怎么赋值给变体

发布时间: 2012-02-16 21:30:36 作者: rapoo

记录类型变量如何赋值给变体?

type
TColumnInfo = record
FieldName: string;
Caption: string;
Width: Integer;
end;

var
V: Variant;
R: TColumnInfo;
begin
V := R;
{[Error] uSrvRDM.pas(82): Incompatible types: 'Variant ' and 'TColumnInfo '}
end;

有什么变通方法?

[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
type
PColumnInfo=^TColumnInfo;
TColumnInfo = record
FieldName: string;
Caption: string;
Width: Integer;
end;

var
V: Variant;
R: TColumnInfo;
P:Pointer;
begin
//记录初始化
R.FieldName:= 'FieldName ';
R.Caption:= 'Caption ';
R.Width:= 100;

//TColumnInfo转换为Variant类型
V := VarArrayCreate ([0, SizeOf(TColumnInfo)], varByte);
P:=VarArrayLock (V);
CopyMemory(P,@R,SizeOf(TColumnInfo));
VarArrayUnlock (V);

//Variant类型转换为TColumnInfo
P := VarArrayLock (V);
R:=PColumnInfo(P)^;
with R do
ShowMessage(Format( '%s %s %d ',[FieldName,Caption,Width]));
VarArrayUnlock (v);
end;

//你自己写个转换函数吧

读书人网 >.NET

热点推荐