我有一个数组声明为:
const A: array[0..3] of ShortString = (
'Customer',
'Supplier',
'Stock',
'GL'
);
var B: array of ShortString;
Run Code Online (Sandbox Code Playgroud)
我想将字符串数组A克隆到另一个数组B.使用移动或复制功能不起作用.有没有使用for循环克隆数组的快速简便方法?
Del*_*ics 11
你面临的问题是你的常数A和变量B实际上是不同的类型.通过展示如何以与您在问题中显示的方式相同的方式声明const和相同类型的var,可以最容易地证明这一点:
type
TSA = array[0..3] of ShortString;
const
A: TSA = (
'Customer',
'Supplier',
'Stock',
'GL');
var B: TSA;
Run Code Online (Sandbox Code Playgroud)
通过这些声明,您可以简单地写:
B := A;
Run Code Online (Sandbox Code Playgroud)
但是当A是一个带尺寸的数组而B是一个动态数组时,这是不可能的,你唯一的选择是根据需要设置SetLength(B)并逐个复制元素.
虽然const和var类型可能看起来都是相同的 - 或兼容类型 - 但它们不是,这与尝试将一个Integer常量赋给String变量没有什么不同......即使你知道简单的转换要实现它,编译器不能猜测你想要这个,所以你必须明确并自己提供转换代码.