Текущий архив: 2003.09.11;
Скачать: CL | DM;
Вниз
Проблема с ф-ей SetLength Найти похожие ветки
← →
Rel_ (2003-09-01 08:45) [0]Мастера, давно уже столкнулся с проблемой. Как можно разрешить след-юю ситуацию.
Передаю в функцию массив
procedure fill1(var mas : array of TRepRec);
begin
пытаюсь изменить его длину:
SetLength(mas, 20) ;
!!! Ошибка: несовместимые типы.
end;
Если массив объявлен глобально и не передаётся в функцию в качестве параметра (или ссылки), то всё отлично.
Подскажите, что за беда.
← →
MBo (2003-09-01 08:49) [1]беда в том, то книжки по языку не прочитаны.
В твоем примере передается не динамический, а открытый массив.
F1 по тому и другому.
← →
Song (2003-09-01 08:50) [2]Компилятор должен знать что за структуру ты передаёшь в процедуру. Поэтому этот параметр должен быть типизирован.
← →
Юрий Зотов (2003-09-01 09:00) [3]> Rel_ (01.09.03 08:45)
type
TMas = array of TRepRec
procedure fill1(var Mas: TMas);
← →
Rel_ (2003-09-01 09:03) [4]to MBo ©
Книжки конечно же читал, но есть ещё такое понятие как опыт. Могут же у меня оставаться невыясненные моменты.
Если Вы MBo © при чтении книг не упустили сей важный вопрос, то подскажите разницу между динамическим и открытым массивом (просто слово открытый мне не совсем ясно (может быть объявленный глобально))???
to Song ©
Что значит типизирован. Тип TRepRec у меня объявлен. Или для функции SetLength массив обязательно должен быть стандартного типа (например Integer)??? Я повторяю, что если тот де массив объявить глобально (например в разделе private класса), то проблема снимается.
← →
Song (2003-09-01 09:05) [5]Типизирован это значит приведён к стандатному типу или описан в Type.
← →
Rel_ (2003-09-01 09:05) [6]to Юрий Зотов ©
!!! Огромное спасибо. Теперь всё ясно.
← →
Song (2003-09-01 09:06) [7]>> Тип TRepRec у меня объявлен. Или для функции SetLength массив обязательно должен быть стандартного типа (например Integer)???
Интересно как массив может быть типом Integer ?
← →
Rel_ (2003-09-01 09:51) [8]Song © Если интересно, то массив элементов типа Integer. Т.е. каждый из элементов имеет тип Integer (32 бита).
← →
Song (2003-09-01 09:55) [9]Не вывёртывайся. Ты так имел ввиду:
Var a: Integer;
a[1]:=1
← →
Rel_ (2003-09-01 10:47) [10]to Song ©
Шутник!!! Тут уж хоть вывёртывайся, хоть не вывёртывайся, а слово не воробей.
Ну теперь я уж точно никогда не буду создавать массив типа Integer !!!
Страницы: 1 вся ветка
Текущий архив: 2003.09.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c