gpt4 book ai didi

arrays - 将变体数组转换为动态数组

转载 作者:行者123 更新时间:2023-12-03 19:00:41 25 4
gpt4 key购买 nike

我正在尝试将变体数组( double 数,但我猜它可能是任何东西)转换为动态数组。我通常使用 DynArrayFromVariant 和 DynArrayToVariant 过程,但在这种情况下,我的变量数组是基于 1 的。这两个函数似乎只适用于基于 0 的数组。知道我该怎么做我需要做的吗?

最佳答案

如果您知道数组元素的类型,则可以编写更高效(但通用性较低)的代码:

function DoubleDynArrayFromVarArray(const V: Variant): TDoubleDynArray;
var
P: Pointer;
Count: Integer;
begin
Result := nil;
if not VarIsArray(V) or (VarType(V) and varTypeMask <> varDouble) or
(VarArrayDimCount(V) <> 1) then
raise EVariantInvalidArgError.Create(SVarInvalid);

Count := VarArrayHighBound(V, 1) - VarArrayLowBound(V, 1) + 1;
if Count = 0 then
Exit;

P := VarArrayLock(V);
try
SetLength(Result, Count);
Move(P^, Result[0], Count * SizeOf(Double));
finally
VarArrayUnlock(V);
end;
end;

关于arrays - 将变体数组转换为动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11309495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com