gpt4 book ai didi

delphi - 有没有办法将整个数组复制到另一个数组中? (除了使用 For 循环)

转载 作者:行者123 更新时间:2023-12-03 14:40:46 25 4
gpt4 key购买 nike

有没有办法将整个数组复制到另一个数组中?除了使用 for 循环之外。

move 是吗?或copy命令为此工作?我确实尝试过,但出现错误:“类型不兼容”。

我应该坚持使用 for 循环吗?

最佳答案

为了安全起见,请在动态数组上使用Copy函数,因为它在内部处理托管类型。数组必须具有相同类型,即在同一表达式中声明:

var  
a, b: array of string;

或者通过定义自定义数组类型:

type   
TStringArray = array of string;
var
a: TStringArray;
//...and somewhere else
var
b: TStringArray;

那么你可以这样做:

a := Copy(b, Low(b), Length(b));  //really clean, but unnecessary 
//...or
a := Copy(b, 0, MaxInt); //dynamic arrays always have zero low bound
//and Copy copies only "up to" Count items

您必须在静态数组上以及混合数组类型时使用循环(我不建议这样做)。
如果您确实必须使用 Move,请记住检查零长度,因为 A[0] 构造可能会引发范围检查错误( >SizeOf(A[0]),由编译器魔术处理,并且从未实际执行)。
另外,永远不要假设 A = A[0]SizeOf(A) = Length(A) * SizeOf(A[0]),因为这仅适用于静态数组,如果您稍后尝试将巨大的代码库重构为动态数组,它会非常严重。

关于delphi - 有没有办法将整个数组复制到另一个数组中? (除了使用 For 循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3545449/

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