Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

const   Найти похожие ветки 

 
vasa777   (2012-06-11 22:33) [0]

в чем отличие процедур с одинаковым телом
procedure My(x:integer);
от
procedure My(const x:integer);
ведь const по умолчанию подразумевается (если его не пишем) какбы если var нету?


 
Ega23 ©   (2012-06-11 22:40) [1]

Экзамен?


 
vasa777   (2012-06-11 22:45) [2]

нет, просто интересно. смотрю вот стронние компоненты с исходниками - в некоторых во всех юнитах так процедуры описаны а в некоторых нет. ето просто для красоты чтения кода?


 
Давайте будем жрать!   (2012-06-11 22:51) [3]

Если в теле первой ты напишешь x := 1, всё будет в порядке. Во втором случае получишь ошибку компиляции.


> const по умолчанию подразумевается
Const менять нельзя. Без спецификатором — менять можно, но после завершения процедуры значение останется прежним. Var — менять можно, и после завершения процедуры значение параметра будет изменено. Н пальцах вот так.

А вообще почитай, что такое передача параметра по ссылке и передача параметра по значению.


 
Inovet ©   (2012-06-11 22:56) [4]

Вместо Integer может быть что-то содержащее указатели, через которые можно без const менять ещё что-то.


 
Давайте будем жрать!   (2012-06-11 23:04) [5]


> Inovet ©   (11.06.12 22:56) [4]
Будто бы конст помешает менять то, на что указатели указывают...


 
Inovet ©   (2012-06-11 23:27) [6]

> [5] Давайте будем жрать!   (11.06.12 23:04)
> Будто бы конст помешает менять то, на что указатели указывают...

Усложнит


 
Германн ©   (2012-06-12 01:43) [7]


> Давайте будем жрать!   (11.06.12 23:04) [5]
>
>
> > Inovet ©   (11.06.12 22:56) [4]
> Будто бы конст помешает менять то, на что указатели указывают.
> ..
>

Будто бы const помешает изменить "обходным" способом и простой тип. Но там ССЗБ.
Но для RAD-продукта вполне хороший "дополнительный" классификатор переменной функции.


 
Давайте будем жрать!   (2012-06-12 07:46) [8]


> Inovet ©   (11.06.12 23:27) [6]
Как?! procedure Proc(P: PInteger) и procedure Proc(const P: PInteger) одинаково позволяют писа́ть в P^. Или ты имел в виду что-то другое, а я не понял.


 
Anatoly Podgoretsky ©   (2012-06-12 08:41) [9]

> Давайте будем жрать!  (12.06.2012 07:46:08)  [8]

CONST защищает только P


 
Давайте будем жрать!   (2012-06-12 09:28) [10]


> Anatoly Podgoretsky ©   (12.06.12 08:41) [9]
Я знаю. Я хочу понять, что утверждается в [4].


 
Anatoly Podgoretsky ©   (2012-06-12 09:45) [11]

То что написано, через указатель можно менять данные, даже при передачи по значению


 
Inovet ©   (2012-06-12 14:19) [12]

> [10] Давайте будем жрать!   (12.06.12 09:28)
> Я хочу понять, что утверждается в [4]

Ну коряво написал.


 
Sha ©   (2012-06-13 00:53) [13]

> Anatoly Podgoretsky ©   (12.06.12 09:45) [11]
> То что написано, через указатель можно менять данные,
> даже при передачи по значению

Ну, это вряд ли. Скорее другое поменяется.


 
Sha ©   (2012-06-13 00:55) [14]

Такое изменение наружу не вылезет:
procedure foo(const i: integer);
begin;
 pInteger(@i)^:=i+1;
 end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.078 c
15-1338033251
Bluejohn
2012-05-26 15:54
2013.03.22
Как очистить Event Log?


2-1340279896
начинающий41
2012-06-21 15:58
2013.03.22
DbGrid


2-1329055821
Rasta
2012-02-12 18:10
2013.03.22
Chromium Embedded подскажите


2-1340221150
leonidus
2012-06-20 23:39
2013.03.22
Странное поведение потока


2-1334249726
novichek
2012-04-12 20:55
2013.03.22
Поиск цвета на битмапе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский