首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-16 
记录类型变量如何赋值给变体? typeTColumnInforecordFieldName:stringCaption:stringWidth:Integerend

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

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;

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

热点排行