Задача 4 Урок 20

Задача 4 Урок 20 Дан текстовый файл, в котором с в ASCII-стиле нарисованы цепочки из цифр, которые связаны по горизонтали и вертикали.
Все цепочки составляют одно дерево, которое устроено так:
всегда есть общий корень и это цифра
-по горизонтали цепочка не разрывается пробелами, соединяется же с помощью -последовательностей знака - (тире).
-по вертикали цепочка не разрывается переносом строк, соединяется же с помощью вертикальных последовательностей символа | (вертикального разделителя).

Var ms:array [1..100] of string;  // размер схемы
    f1:text;
    filename,s: string;
    i,j,n,u,kk,ll,naib:integer;
procedure proc(mms: array of string;l,k:integer; var nn:integer);
var str: string;
begin
  while (k>=1) and (l>=0) do // цикл от последнего символа до первого
  begin
    str:=mms[l]; // присваиваем строку в переменную
    if (str[k]>='0') and (str[k]<='9') then // если в строке есть число
    begin
        nn:=nn+1;// то записываем в переменную число
        k:=k-1; // - к циклу  K
    end;
    if (str[k]='-') then  // если это тире
      k:=k-1;   // то - к циклу  K
    if (str[k]='|') then // если это прямая скобка
      l:=l-1;  // то - к циклу  l  (Для переход между строками)
  end;
end;
begin
  filename := 'C:\Users\user\Documents\cepochkii.txt';     // путь к файлу
  assign(f1, filename);      // связывание переменной дескриптора  с путём к файлу
  reset(f1);   // открываем файла для чтения
  writeln('========nachalo faila=====');
  i:=1;    // счётчик +1

  while not eof(f1) do  // пока не достигнут конец файла
    begin
      readln(f1, s);  // читаем из него очередную строку
      writeln(s);  // выводим очерепдную строку
      ms[i]:=s;    // записываем в масиив эту строку
      i:=i+1;   // + к счётчику
    end;
  writeLn('========= konez faila =========');
  naib:=0;  // присваиваем к переменной 0
  n:=0;     // присваиваем к переменной 0
  for j:=1 to i do   // счётчик от 1 до i
  begin
    s:=ms[j];   // записываем очередную строку  в переменную
    for u:=1 to length(s) do  // цикл от 1 до max символу в строке
    begin
     if (s[u]>='0') and (s[u]<='9') and (u=length(s)) then  // если это цифра и последняя строка
      begin
        kk:=u; // то записываем max число в переменную
        ll:=j-1; // минусуем j(для изьежения обработки последнего элеимента) и записываем  в ll  (для перехода между строками)
        proc(ms,ll,kk,n); // направляемся в процедуру
        if (naib<n) then  // если наиб меньше N
          naib:=n;   // то присваем знач n  в naib
        n:=0;  // обнуляем n
      end;
    end;
  end;
  writeln('naib= ',naib);
  readln();
end.                                   

Вывод консоли:

========nachalo faila=====
1------4--------------5-------6--------7
       |              |
       |              |-------5---------8
       |
       |-------6--------7--7-------9------8---1----5---3
========= konez faila =========
naib= 10