请问varArrayCreate与varArrayLowBound函数的用法(100分)

  • 主题发起人 主题发起人 wind_2005
  • 开始时间 开始时间
W

wind_2005

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:varArrayCreate与varArrayLowBound函数的如何使用?
再下先谢谢了!
 
嗯,一个例子:

function StreamToDataPackage(const AStream: TStream): OleVariant;
var
pData: Pointer;
begin
Assert(AStream <> nil);
Result := Null;
with AStream do
begin
if Size = 0 then
Exit;
Result := VarArrayCreate([0, Size-1], varByte);
pData := VarArrayLock(Result);
try
Position := 0;
Read(pData^, Size);
finally
VarArrayUnlock(Result);
end;
end;
end;

procedure DataPackageToStream(const ADataPackage: OleVariant
AStream: TStream);
var
p: Pointer;
begin
Assert(AStream <> nil);
with AStream do
begin
if ADataPackage = Null then
begin
Size := 0;
Exit;
end;
Position := 0;
Size := VarArrayHighBound(ADataPackage, 1) - VarArrayLowBound(ADataPackage, 1) + 1;
p := VarArrayLock(ADataPackage);
try
Write(p^, Size);
finally
VarArrayUnlock(ADataPackage);
end;
Position := 0;
end;
end;
 
谢谢你了,我这里有例子,只是详细的了解他们的具体用法,及各参数的含义,谢谢
 
谢谢你了,我这里有例子,只是想 详细的了解他们的具体用法,及各参数的含义,谢谢
 
F1 看帮助啊:
variant数组的创建方法:
function VarArrayCreate(const Bounds: array of Integer
VarType: integer): variant

Bounds: 告诉数组的上下界;
VarType: 决定了数组的中存储什么类型的数据。
例如:创建数组的数组, 可以模仿任何类型的数据结构类型:
VarArrayX := VarArrayCreate([1,10], varVariant)

数组的单个元素可以装载一个数组: VarArrayX[1] := VarArrayCreate([1,5], varVariant)

VarArrayLowBound、VarArrayHighBound(与数组的low、high类似)计算边界

VarArrayDimCount:计算数组的维数;
 
哈哈,谢谢你,还有一点小小的问题,
VarArrayHighBound(ADataPackage, 1) 中,第二个参数是什么意思?
我试了好多次,此参数只有为1时才能正常运行,可能是我用法上有误,请再帮我一次,谢谢 !!
 
VarArrayHighBound返回的是多维数组中某一维的上界.如果创建Variant的时候VarArrayCreate([1,10,1,20], varVariant)

VarArrayHighBound(ADataPackage,1)=10;
VarArrayHighBound(ADataPackage,2)=20;
 
谢谢二位了[:)]
 
后退
顶部