Каково поведение объявления процедуры без типа параметра? - PullRequest
0 голосов
/ 04 июня 2018

Испытывая некоторый код, я обнаружил, что если мы предоставим параметр для функции или процедуры без типа, это не даст нам ошибки во время компиляции.

Почему это происходит, и, пожалуйста, дайте некоторое объяснениепоскольку я нигде не могу найти такой код?

объявление процедуры:

Procedure TestProc(var objTest);

Если мы удалим ключевое слово var, то ошибка времени компиляции будет представлена ​​как Type required.

Может кто-нибудь объяснить это?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Нетипизированные параметры обычно используются, когда фактический тип параметра не имеет значения.Одним из примеров может быть стандартная процедура " FillChar ", которая заполняет переменную - ЛЮБУЮ переменную - указанным байтовым значением.Вместо необходимости нескольких (на самом деле бесконечное количество) перегруженных процедур, чтобы иметь возможность заполнить произвольную переменную значением, используется нетипизированный параметр.

Нетипизированный параметр (как и любой другой параметр) может быть «входным»«(данные, поступающие в процедуру / функцию) с использованием префикса CONST,« output »(данные, поступающие из процедуры / функции), или префикс OUT, или оба (данные, отправляемые в процедуру, измененыи отправлено обратно) с использованием префикса VAR.

Как вы можете заметить, процедура FillChar использует префикс VAR, хотя OUT будет более правильным.Однако процедура FillChar была «создана» в то время, когда префиксы OUT не существовали в языке (существовали только CONST и VAR, а из двух VAR был единственным, который позволялданные возвращаются из процедуры, поэтому использовался VAR).

0 голосов
/ 04 июня 2018

Как Виктория сказала, что это нетипизированный параметр

Если вы хотите создать процедуру или функцию, которая может обрабатывать различные типы параметров, вам следует использовать overload .Каждый раз, когда вы вызываете перегруженную функцию, от вашего Inpout зависит, какая эксклюзивная функция будет использоваться для процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...