怎样传入一个olevariant的参数??(100分)

  • 主题发起人 hyzeng1314
  • 开始时间
H

hyzeng1314

Unregistered / Unconfirmed
GUEST, unregistred user!
函数原型为:
GeoDem.DPSetMultLever(aElevation:OleVariant,aColor:OleVariant):wordbool ;
其中:aElevation 实际表示的是一个double的数组
aColor 表示的是一个颜色值数组

我使用的源代码如下:
procedure TMain.N8Click(Sender: TObject);
type
PArrayData = ^TArrayData;
TArrayData = array[0..8] of Variant;
var
FrmLevel : TFrmLevel ;
Colors,Level : OleVariant ;
A,B : PArrayData;
begin
FrmLevel := TFrmLevel.Create(Self);
if FrmLevel.ShowModal= mrok then
begin
Colors := varArrayCreate([0,8],VarVariant);
Level := varArrayCreate([0,8],VarVariant);
A := VarArrayLock(Colors) ;
B := VarArrayLock(Level) ;
try
A^[0] := FrmLevel.Panel1.Color ;
A^[1] := FrmLevel.Panel2.Color ;
A^[2] := FrmLevel.Panel3.Color ;
A^[3] := FrmLevel.Panel4.Color ;
A^[4] := FrmLevel.Panel5.Color ;
A^[5] := FrmLevel.Panel6.Color ;
A^[6] := FrmLevel.Panel7.Color ;
A^[7] := FrmLevel.Panel8.Color ;
A^[8] := FrmLevel.Panel9.Color ;

B^[0] := StrToFloat(FrmLevel.Edit2.Text ) ;
B^[1] := StrToFloat(FrmLevel.Edit4.Text ) ;
B^[2] := StrToFloat(FrmLevel.Edit6.Text ) ;
B^[3] := StrToFloat(FrmLevel.Edit8.Text ) ;
B^[4] := StrToFloat(FrmLevel.Edit10.Text) ;
B^[5] := StrToFloat(FrmLevel.Edit12.Text) ;
B^[6] := StrToFloat(FrmLevel.Edit14.Text) ;
B^[7] := StrToFloat(FrmLevel.Edit16.Text) ;
B^[8] := StrToFloat(FrmLevel.Edit18.Text) ;
finally
VarArrayUnlock(Colors) ;
VarArrayUnlock(Level) ;
end ;

GeoDem1.DPSetLeverBlend(True);
GeoDem1.DPSetMultLever(Level,Colors);
Geodem1.DPSetMultLever()
GeoDem1.DPMultLever ;
end ;
end;

报的错误是:variant is locked !!

help!!!
 
顶部