Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.022 c
3-33510
uhhax
2003-08-20 03:55
2003.09.11
нестандартный просмотр отчета


14-33774
sasami737
2003-08-21 18:04
2003.09.11
Секция Initialization


7-33823
Zilog
2003-06-16 14:31
2003.09.11
Как можно организовать передачу данных по паре?


3-33518
Lazy Cat
2003-08-19 02:47
2003.09.11
SQL запрос


1-33651
coin
2003-08-30 15:44
2003.09.11
Копирование содержимого экрана в буфер, не нажимая PrintScrn.