> -- prospero78 писал(а):
> IN параметр -- только для входа, т.е. изменять его нельзя. По сути, процедура работает с константой.VAR параметр -- работает с переменной, я думаю это объясняет разницу в машинном коде -- компилятор готовит структуры как для массива. 6 литер -- это 12 байт, плюс скрытые поля: тип, размер, наследование и всякое такое.

С VAR не компилируется (как и должно быть).
С IN компилируется (кажется, это противоречит Сообщению), при этом работа в P1 действительно идет как с массивом -- я сейчас глянул ассемблерный код.
Без префикса/"По значению" -- компилятор добавляет в процедуру P1 код для копирования, поэтому и размер кода больше.

Самое интересное, что код процедуры Doвовсе не меняетсяпри добавлении/удалении IN.
В чем всё-таки основное отличие передачи массивов через IN и по значению, если оно есть?

> -- prospero78 писал(а):
> По большому счёту -- OUT после недавних измений семантики -- примерно равен VAR.Уверен, что вести себя компилятор будет как и при VAR.

Поясните, пожалуйста, про какие изменения семантики речь?