Нельзя преобразовать тип array 1.10 of integer

Нельзя преобразовать тип array 1.10 of integer к array of integer Как исправить?
Работаю в PascalABC.NET
break использовать нельзя

Ошибка здесь
first_index:=search_first_index(massive);
last_index:=search_last_index(massive);

const
const_mas = 10;
//
//Поиск индекса первого четного числа
//
function search_first_index(const massive:array of integer):integer;
  var i, first_index: integer;
  begin
    for i:= 0 to const_mas do;
      begin
        if massive[i] mod 2 = 0 then
          begin
            first_index:= i
          end
        else 
          begin
            first_index:=0
          end;
      end;
      search_first_index:=first_index
  end;
//
//Поиск индекса последнего четного числа
//
function search_last_index(const massive:array of integer):integer;
  var i, last_index: integer;
  begin
    for i:= const_mas downto 1 do;
      begin
        if massive[i] mod 2 = 0 then
          begin
            last_index:= i
          end
        else 
          begin
            last_index:=0
          end;
      end;
      search_last_index:=last_index
  end;
  
var i, first_index, last_index: integer;
 massive: array[1..const_mas] of integer;
 new_massive: array[1..const_mas] of integer;
    begin
      writeln('введите числа');
      for i:= 1 to const_mas do
        begin
          read(massive[i]);
        end;
        first_index:=search_first_index(massive);
        last_index:=search_last_index(massive);
          if (first_index = last_index) or (first_index = 0) then
            writeln('Пустое множество')
        else 
          for i:=first_index to last_index do
          begin
            new_massive[i]:=i;
            write(new_massive)
          end;
        end.
  1. В какой строке ошибку выдает?
  2. параметром не должен быть array of integer, процедура хочет работать с array [1..10] of integer
  3. В процедурах поиска елементов, после того как нашли первый елемент который соответствует условиям, надо останавливать цикл иначе рискуете получить 0

Параметр открытый массив. Если делфи, то ошибки не должно быть. Паскаль не помню хавает ли такое. Лазарус по идее должен съесть. Другое дело, что индексация в функции от 0 у такого параметра. В коде лишние точки с запятой, во второй функции будет вылет за пределы массива. Впрочем для этого нужно что бы код скомпилировался, а там как минимум лишние точки с запятой ))

я не знаю, какая задача решается (заполнение массива

new_massive[i] := i; 

в конце программы - на мой взгляд, некорректно и бессмысленно. и массив new_massive не нужен и написать функции можно проще и короче.

но, собственно, вот так будет компилироваться (и даже работать - исправил грубейшие ошибки внутри функций):


const 
  const_mas = 10;

type TMyArray = array[1..const_mas] of integer;

//
//Поиск индекса первого четного числа
//
function search_first_index(const massive:TMyArray): integer;

var i, first_index: integer;
begin
  first_index := 0;
  for i:= 1 to const_mas do
  begin
    if massive[i] mod 2 = 0 Then
    begin
        first_index := i;
        break
    end;
  end;
  search_first_index := first_index
end;
//
//Поиск индекса последнего четного числа
//
function search_last_index(const massive:TMyArray): integer;
var i, last_index: integer;
begin
  last_index := 0;
  for i:= const_mas downto 1 do
  begin
    if massive[i] mod 2 = 0 Then
      begin
        last_index := i;
        break 
      end;
  end;
  search_last_index := last_index
end;

var i, first_index, last_index: integer;
  massive, new_massive : TMyArray;
begin
  writeln('введите числа');
  for i:= 1 to const_mas do
    begin
      read(massive[i]);
    end;
  first_index := search_first_index(massive);
  last_index := search_last_index(massive);
  if (first_index = last_index) or (first_index = 0) Then
    writeln('Пустое множество')
  else
    for i:=first_index to last_index do
      begin
        new_massive[i] := i;
        write(new_massive[i],' ')
      end;
end.