BufData: OleVariant;
Pic: Variant; BufData := VarArrayCreate([0, PicSize - 1], varByte);
Pic := VarArrayCreate([0, PicWidth - 1, 0, PicHeight - 1], varByte); for i := 0 to PicWidth - 1 do
begin
for j := 0 to PicHeight - 1 do
begin
Pic[i, j] := BufData[j * PicWidth + i];
end;
end;
由于Pic和BufData都是Variant,所以计算很慢,要328ms(比正常数组计算,只要31ms慢十倍),能不能加快运算
Pic: Variant; BufData := VarArrayCreate([0, PicSize - 1], varByte);
Pic := VarArrayCreate([0, PicWidth - 1, 0, PicHeight - 1], varByte); for i := 0 to PicWidth - 1 do
begin
for j := 0 to PicHeight - 1 do
begin
Pic[i, j] := BufData[j * PicWidth + i];
end;
end;
由于Pic和BufData都是Variant,所以计算很慢,要328ms(比正常数组计算,只要31ms慢十倍),能不能加快运算
Pic: Variant; P,P1: Pointer; BufData := VarArrayCreate([0, PicSize - 1], varByte);
Pic := VarArrayCreate([0, PicWidth - 1, 0, PicHeight - 1], varByte); //for i := 0 to PicWidth - 1 do
//begin
// for j := 0 to PicHeight - 1 do
// begin
// Pic[i, j] := BufData[j * PicWidth + i];
// end;
//end; P := VarArrayLock(BufData);
P1 := VarArrayLock(Pic); Move(PAnsiChar(P)^, PAnsiChar(P1)^, PicSize);
VarArrayUnLock(BufData);
VarArrayUnLock(Pic);
另外问下:VarArrayLock和VarArrayUnLock的作用是什么,是必须要用吗
VarArrayUnLock:解除锁定;