Copier copie toute array of X
à un autre array of X.
Si X
est AnsiString
, il copie (ou tranche) à un array of AnsiString
.
Le projet de démonstration suivant montre que le résultat est un array of AnsiString
, car il traite chaque "caractère" individuel. Si le résultat était un UnicodeString
, vous ne verriez que le premier caractère (par exemple, 'One'
serait le seul "octets" 'O'#0'n'#0'e'#0#0#0
, donc la boucle s'arrêterait après le '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.
Sortie:
O-n-e-
T-w-o-
Il n'y a donc pas besoin de faire quelque chose de spécial. Utilisez simplement Copy
tel quel.
FPC 3.0.0 sur Windows.
Simple à écrire votre propre fonction, non? –
@DavidHeffernan C'est un moyen. –
Désolé, je ne peux pas vraiment donner un sens à votre q: que voulez-vous que 'Copy' ne fera pas? – MartynA