我想知道是否存在切片Array of AnsiString
并返回Array of AnsiString
的函数。 Copy
函数返回Array of String
,所以我碰巧在网上搜索另一个解决方案,但我找不到任何内容。
我们有解决方案吗?
我正在使用Free Pascal。
答案 0 :(得分:4)
复制会将所有array of X
复制到另一个array of X.
如果X
为AnsiString
,则会将其复制(或切片)为array of AnsiString
。
以下证明项目显示结果是array of AnsiString
,因为它解决了每个人和#34;字符"。如果结果是UnicodeString
,您将只看到第一个字符(例如'One'
将是单个"字节" 'O'#0'n'#0'e'#0#0#0
,因此循环将在'O'
)。
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。