Ошибка времени выполнения: Индекс находится вне границ массива

Написал программу но почему то выдаёт ошибку: "Ошибка времени выполнения: Индекс находился вне границ массива."

program DZ;
    var D: string;
    q, h, p, r: integer;
    l: real;
    const a:string = ('0123456789');
    b:string = ('02468');
    begin
      repeat
        p:=0;
        q := 0;
        repeat
          writeln('Здравствуйте введите число в промежутке от 1 до 1000000');
          readln(D);
          l := length(D);
          
          if ((l>5.00) and (D <> '1000000')) or (D = '0') or (D = '') then
            writeln('Ввод не соответствует ожиданиям');
        until ((l<=5.00) or (D = '1000000')) and (D <> '0') and (l>0);
        h := round(int(l));
        for t:integer:=0 to h do begin
          r:=t;
          if pos(D[r], a)=0 then q := q+1;
          if D[r] in b then p := p+1;
          end;
        if q > 0 then writeln('Ввод не соответствует ожиданиям');
      until q = 0;
      writeln('В введённом вами числе ', p, ' четных цифр');
      
    end.

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

Автор решения: Rustam Kadimov

for t:integer:=0 to h do begin - здесь наверное надо уменьшить h на единицу.

→ Ссылка