Algorithm Math Delphi

Title: How to delete one item from a dynamic array
type
TArrayString = array of string;
procedure DeleteArrayIndex(var X: TArrayString; Index: Integer);
begin
if Index High(X) then Exit;
if Index Low(X) then Exit;
if Index = High(X) then
begin
SetLength(X, Length(X) - 1);
Exit;
end;
Finalize(X[Index]);
System.Move(X[Index +1], X[Index],
(Length(X) - Index -1) * SizeOf(string) + 1);
SetLength(X, Length(X) - 1);
end;
// Example : Delete the second item from array
procedure TForm1.Button2Click(Sender: TObject);
var
a: TArrayString;
begin
DeleteArrayIndex(a, 2);
end;