Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

const в параметрах [D7]


Страницы:   1 2 3 4 5

махс ©   (2008-03-02 11:23:00) 

Загадка для меня. В каких случаях в процедуру или функцию передают значение константой;

Я понимаю, что это означает. Но вот когда именно это применяют не пойму. Бывает выжу чужой исходник, в функцию передают пять параметров - не один внутри функции не изменяют, а с констнтой идет только самый первый.

Поясните?

Спасибо.


Anatoly Podgoretsky   (2008-03-02 14:28:00) [81]

> {RASkov}  (02.03.2008 14:20:06)  [6]

Ссылки для интегер работают медленнее значений.


{RASkov}   (2008-03-02 14:20:00) [82]

> Потому что для Integer без разницы, как его передавать

Что-то я в замешательстве....

procedure M(const I: Integer);
и
procedure M1(I: Integer);
одинаковые что ли?
т.е. вызов М1 не "раздвоит" значение?? Что-то здесь не так..... а ведь "раздвоит", так как:
N:=5;
M1(N);
ShowMessage(IntTostr(N));

при:
procedure M1(I: Integer);
begin
 ....
 I:=Random(I);
end;

Покажет(должно показать) - 5...

или я не верно понял [4],[5] :( ...т.е. не в контексте вопроса автора, а в целом.
Я так считал, что:
1 - function StrToIntDef(const S: string; Default: Integer): Integer;
2 - function StrToIntDef(const S: string; const Default: Integer): Integer;
вторая функция будет работать "быстрее" первой.... ибо не будет копироваться значение, а передастся ссылка....


Anatoly Podgoretsky   (2008-03-02 13:34:00) [83]


> Бывает выжу чужой исходник, в функцию передают пять параметров

Где пять параметров.
А в приведеном коде без разницы, что const, что без.
Приводи примет, а то беспредметный разговор.


Игорь Шевченко   (2008-03-02 13:33:00) [84]


>
> Почему бы тут не передать Default, как const?


Потому что для Integer без разницы, как его передавать, а для string разница есть. А раз без разницы, зачем лишние буквы набивать.


{RASkov}   (2008-03-02 13:23:00) [85]

> Почему бы тут не передать Default, как const?

Ну "забыли" борландовцы....

> Загадка для меня. В каких случаях в процедуру или функцию
> передают значение константой;

Тыж говоришь:

> Я понимаю, что это означает.

Откуда тогда такие вопросы?
Значит ты не понимаешь :(

В данном случае не смотри на чужой код с поспешными выводами, а разберись досканально - что и для чего...


махс   (2008-03-02 13:08:00) [86]

Ну вот пример из боландовских исходников:

function StrToIntDef(const S: string; Default: Integer): Integer;
var
 E: Integer;
begin
 Val(S, Result, E);
 if E <> 0 then Result := Default;
end;


Почему бы тут не передать Default, как const?


Anatoly Podgoretsky   (2008-03-02 11:30:00) [87]

> махс  (02.03.2008 11:23:00)  [0]

А пример?


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо