Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.11.2011, 02:09
darkfox-777 darkfox-777 вне форума
Прохожий
 
Регистрация: 02.11.2011
Сообщения: 1
Репутация: 10
По умолчанию procedure P1(const x; var y);

Объясните правильна ли запись
procedure P1(const x; var y);
без объявления типа переменных?
Если да, то какого типа переменные x и y?
Ответить с цитированием
  #2  
Старый 02.11.2011, 02:47
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

1. Правильна.
2. Читаем иногда справку:
Цитата:
A constant (const) parameter is like a local constant or read-only variable. Constant parameters are similar to value parameters, except that you can't assign a value to a constant parameter within the body of a procedure or function, nor can you pass one as a var parameter to another routine. (But when you pass an object reference as a constant parameter, you can still modify the object's properties.)

Using const allows the compiler to optimize code for structured- and string-type parameters. It also provides a safeguard against unintentionally passing a parameter by reference to another routine.

Here, for example, is the header for the CompareStr function in the SysUtils unit:

function CompareStr(const S1, S2: string): Integer;

Because S1 and S2 are not modified in the body of CompareStr, they can be declared as constant parameters.

//-----------------------------------------

procedure Pr(var y);

В этом примере параметр y объявлены нетипизированным.
В тексте процедуры или функции для нетипизированного параметра должна применяться операция явного приведения типов, определяющая тип этого параметра. Например:

real(Y) := real(Y)*10;

Реальный тип аргумента должен соответствовать типу, принятому в процедуре, но не обязательно точно. Например, если параметр - массив, то размер массива, определенный в процедуре, может превышать размер аргумента. Если же получается несоответствие типов (например, аргумент - real, а в процедуре он описан как integer), то никаких сообщений об ошибках и никаких исключений генерироваться не будет, но результаты вычислений будут неверными.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025