有没有一种简单的方法来克隆字符串数组?

Cha*_*ang 4 arrays delphi

我有一个数组声明为:

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)并逐个复制元素.

虽然constvar类型可能看起来都是相同的 - 或兼容类型 - 但它们不是,这与尝试将一个Integer常量赋给String变量没有什么不同......即使知道简单的转换要实现它,编译器不能猜测你想要这个,所以你必须明确并自己提供转换代码.