Почему элемент 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.

Помогите пожалуйста решить проблему.


Ответы (1 шт):

Автор решения: MBo

for j := length(a) downto 1 do

for j := max_len downto 1 do

→ Ссылка