Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何复制ANSI字符串数组,以便获得另一个ANSI字符串数组_String_Pascal_Freepascal - Fatal编程技术网

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

String 如何复制ANSI字符串数组,以便获得另一个ANSI字符串数组,string,pascal,freepascal,String,Pascal,Freepascal,我想知道是否有一个函数可以分割一个AnsiString的数组并返回AnsiString的数组。Copy函数返回字符串数组,所以我碰巧在网上搜索了另一个解决方案,但什么也找不到 我们有解决这个问题的办法吗 我使用的是免费的Pascal。复制将把任何数组X复制到另一个数组X。如果X是AnsiString,它将复制(或切片)到数组AnsiString 下面的验证项目显示结果是一个AnsiString的数组,因为它处理每个单独的“字符”。如果结果是一个UnicodeString,您将只看到第一个字符(例

我想知道是否有一个函数可以分割一个AnsiString的
数组
并返回AnsiString的
数组
Copy
函数返回
字符串数组
,所以我碰巧在网上搜索了另一个解决方案,但什么也找不到

我们有解决这个问题的办法吗


我使用的是免费的Pascal。

复制将把任何
数组X
复制到另一个
数组X。
如果
X
AnsiString
,它将复制(或切片)到
数组AnsiString

下面的验证项目显示结果是一个AnsiString的
数组,因为它处理每个单独的“字符”。如果结果是一个
UnicodeString
,您将只看到第一个字符(例如
'One'
将是单个“bytes”
'O'#0'n'#0'e'#0#0
,因此循环将在
'O'
之后停止)

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



Windows上的FPC 3.0.0。

复制将把任何
X数组
复制到另一个
X数组。
如果
X
AnsiString
,它将复制(或切片)到
AnsiString数组

下面的验证项目显示结果是一个AnsiString的
数组,因为它处理每个单独的“字符”。如果结果是一个
UnicodeString
,您将只看到第一个字符(例如
'One'
将是单个“bytes”
'O'#0'n'#0'e'#0#0
,因此循环将在
'O'
之后停止)

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



Windows上的FPC 3.0.0。

编写自己的函数很简单,不是吗?@DavidHeffernan这是一种方法。对不起,我不能完全理解你的问题:你想要什么
Copy
做不到?我不确定FreePascal,但在Delphi中,
Copy
只会复制(或切片,如果你使用正确的参数)一个
X数组
到另一个
X数组
。如果
X
AnsiString
,那么结果也是一个
AnsiString
数组。编写自己的函数很简单,不是吗?@DavidHeffernan这是一种方法。对不起,我不能完全理解你的问题:你想要什么
复制
不会做什么?我不确定FreePascal,但在Delphi中,
复制
只会复制(或切片,如果使用正确的参数)将一个
数组X
转换为另一个
数组X
。如果
X
AnsiString
,则结果也是
数组AnsiString
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-