Почему элемент StringGrid не корректно выводит данные
пишу код на Паскале в Делфи, мне нужно вывести сумму чисел в элемент StringGrid, одна цифра в одну клетку StrintGrid. Сами числа находятся в двумерном массиве, элементы которого я и слагаю. Попытка вывода суммы не оборачивается успехом, при сложении в таблице ничего не появляется, при вычитании появляются нули. В программе используются GroupBox (для выбора сложения или вычитания), 2 Edit-а (для ввода чисел), StringGrid (для вывода их суммы) и ещё несколько элементов, но они работают исправно.
unit Unit3;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.CheckLst,
Vcl.ExtCtrls;
type
TForm3 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
RadioGroup1: TRadioGroup;
Edit3: TEdit;
StringGrid2: TStringGrid;
procedure Button1Click(Sender: TObject);
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
var
num_1: array [1..30, 1..2] of integer;
sum: array [1..30] of integer;
i, plus_needed_len, j, max_len, i_a, i_b: integer;
a, b, c: string;
//__________________Заполнение массива________________>
begin
a := Edit1.Text;
b := Edit2.Text;
c := '';
if length(a) > length(b) then
begin
max_len := length(a);
for j := length(a) to 1 do
begin
num_1[j - 1, 1] := strtoint(a[j]);
if j < length(b) then
num_1[j - 1, 2] := 0
else
num_1[j - 1, 2] := strtoint(b[j]);
end;
end
else
begin
max_len := length(b);
for j := length(b) to 1 do
begin
num_1[j - 1, 2] := strtoint(b[j]);
if j < length(a) then
num_1[j - 1, 1] := 0
else
num_1[j - 1, 1] := strtoint(a[j]);
end;
end;
//_____________Вычисление суммы или разности______________>
StringGrid2.colcount := max_len;
if RadioGroup1.ItemIndex = 1 then
begin
for j := max_len to 1 do
StringGrid2.Cells[j - 1, 0] := inttostr(num_1[j - 1, 1] + num_1[j - 1, 2]);
end
else
begin
for j := max_len to 1 do
StringGrid2.Cells[j - 1, 0] := inttostr(num_1[j - 1, 1] - num_1[j - 1, 2]);
end;
//______________Вывод данных в таблицу____________________>
for j := 1 to length(a) do
StringGrid1.Cells[j - 1, 0] := a[j];
for j := 1 to length(b) do
StringGrid1.Cells[j - 1, 1] := b[j];
end;
end.
Помогите пожалуйста решить проблему.