Как исправить ошибку "raised exception class" при сборке кода?
Мне нужно из массива фамилий найти те, которые начинаются на заданную букву. Написал небольшую программу, но к сожалению, поиск не производится с такой ошибкой:

Не понимаю, что я сделал не так? Вот полный код программы (выкладываю весь, там всего 2 кнопки, не знаю точно, в каком участке живет проблема):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
n, i: integer;
A: array of string;
ch: char;
s: string;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
A:=nil;
inputquery('Количество фамилий', 'Определите количество фамилий, которое необходимо записать в массив:', s);
n := strtoint(s);
SetLength(A, n);
for i := 0 to Length(A) - 1 do
A[i] := Memo1.Lines[i];
ListBox1.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
inputquery('Буква', 'Определите букву, эталон для поиска:', s);
ch := s[1];
for i := 1 to n do begin
s := A[i];
if (s[1] = ch) or (s[1] = upcase(ch)) then ListBox1.Items.Add(A[i]);
end;
end;
end.