如何复制一个 ANSI 字符串数组,以便我可以获得另一个 ANSI 字符串数组

How do I copy an array of ANSI strings so that I can get another array of ANSI string

我想知道是否有一个函数可以对 Array of AnsiString 和 return Array of AnsiString 进行切片。 Copy函数returns Array of String,所以我偶然在网上搜索了另一种解决方案,但我找不到任何东西。

我们有解决办法吗?

我正在使用 Free Pascal。

复制会将任何 array of X 复制到另一个 array of X. 如果 XAnsiString,它将复制(或切片)到 array of AnsiString

以下证明项目表明结果是 array of AnsiString,因为它针对每个人 "character"。如果结果是 UnicodeString,您将只看到第一个字符(例如 'One' 将是单个 "bytes" 'O'#0'n'#0'e'#0#0#0,因此循环将在 [=21 之后停止=]).

program Project1;

uses
  SysUtils;

type
  TAnsiStringArray = array of AnsiString;

procedure Main;
var
  A, B: TAnsiStringArray;
  I: Integer;
  P: PAnsiChar;
begin
  A := TAnsiStringArray.Create('Zero', 'One', 'Two', 'Three');

  { Plain Copy, nothing special: }
  B := Copy(A, 1, 2);  { Copies 'One' and 'Two' }

  for I := Low(B) to High(B) do
  begin
    P := PAnsiChar(B[I]);
    while P^ <> #0 do
    begin
      Write(P^, '-');
      Inc(P);
    end;
    Writeln;
  end;
end;

begin
  Main;
  Readln;
end.

输出:

O-n-e-
T-w-o-

所以不需要做任何特别的事情。只需按原样使用 Copy


Windows.

FPC 3.0.0