记录类型变量怎么赋值给变体
记录类型变量如何赋值给变体?
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;
//你自己写个转换函数吧
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;
//你自己写个转换函数吧