如何复制一个 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.
如果 X
是 AnsiString
,它将复制(或切片)到 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
我想知道是否有一个函数可以对 Array of AnsiString
和 return Array of AnsiString
进行切片。 Copy
函数returns Array of String
,所以我偶然在网上搜索了另一种解决方案,但我找不到任何东西。
我们有解决办法吗?
我正在使用 Free Pascal。
复制会将任何 array of X
复制到另一个 array of X.
如果 X
是 AnsiString
,它将复制(或切片)到 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