program example;
var
c: char;
n, m: integer;
template: string;
begin
n := 1;
while not eof do
begin
read(c);
template[n] := c;
if c = #10 then
begin
for m := 1 to n - 1 do
begin
writeln(template[m], #9, m);
end;
end;
n := n + 1;
end;
writeln(template[3]);
writeln(length(template));
end.
{$H+}
тип string
является алиасом на тип ShortString
, который хранит длину строки в символе с индексом ноль. Максимальная длина для ShortString
равна 255.Length
правильно работала для ShortString
, длину строки нужно задавать функцией SetLength
- в самом начале процедуры добавьте вызов setlength(template, 255);
n-1
- можно использовать это значение;{H+}
или объявить строку как AnsiString
и увеличивать длину строки динамически. Перед записью в строку на каждой итерации дабавьте: setlength(template, length(template) + 1);
- тогда вызов length(template)
вернёт нужное значение.