На первый взгляд - в функции Number P задан как var, а тут видна попытка передачи константного (менять нельзя) значения - Number(S[P]), да и Р: интеджер, а S[P] это чарка, несовпадение типов. Нужно заВарить отдельную переменную для передачи в функцию, ну и с приведением к типу разобраться. напр
Код:
var
ds: integer;
begin
ds:=StrToInt(s[p]);
Number(ds);
...
end;