Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание функции с "необязательным" параметром, КАК??? И Возможно ли??? 
V
    Опции темы
mspuz
Дата 1.3.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



Во многих языках программирования есть часть функций, которые имеют параметры, которые необязательно указывать в конкретно взятой ситуации. В описаниях они часто обазначаются в квадратных скобках. А как создать такой параметр в своей функции??? Т.е. я могу указать его значение, а могу просто ничего не указывать. И если это возможно, то как в самой функции отслеживать, что количество параметров уменьшилось???

Это сообщение отредактировал(а) mspuz - 1.3.2006, 10:51
PM MAIL   Вверх
Snowy
Дата 1.3.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код
  procedure MyProc(param1: string; param2: integer; param3: boolean = true; param4: string = 'строка');
Здесь параметры 3 и 4 необязательны.
PM MAIL   Вверх
Slaad
Дата 1.3.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



И обязательное требование, чтобы инициализированные параметры всегда были в конце.
PM MAIL   Вверх
Snowy
Дата 1.3.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Также можно сделать переменное кол-во параметров на основе массивов.
Вот пример, как это делается:
http://forum.vingrad.ru/index.php?showtopi...p;#038;p=643498
Добавлено @ 12:12
Это на случай, когда переменное количество должно быть в любом месте.
PM MAIL   Вверх
mspuz
Дата 1.3.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



Snowy, А как для функции будет, как мне написать такой вот пример:
function MyF(Kolvo:Integer; MyMas: array of String = []):Integer;
Выдает ошибку, что для данного параметра нельзя устанавливать значение по умолчанию. Т.е. для дин. массива такое не прокатит???
PM MAIL   Вверх
Snowy
Дата 1.3.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

function MyF(Kolvo:Integer; MyMas: array of String):Integer;
По умолчанию он и так пустой.
Добавлено @ 13:39
Ты уж определись, что ты будешь использовать.
Второй и третий вариант несовместимы.
PM MAIL   Вверх
mspuz
Дата 1.3.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 20.6.2005
Где: Ногинск

Репутация: нет
Всего: нет



Snowy, Мне нужно, чтобы можно было не задавать второй параметр (MyMas), если он не требуется, т.е. написать:

MyF(2); - не нужен

или

MyF(2,['1','2','3']); - нужен
PM MAIL   Вверх
Snowy
Дата 1.3.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Тогда используй в комбинации с первым вариантом:
Код

  function MyF(Kolvo:Integer; MyMas: array of String):Integer; overload;
  function MyF(Kolvo:Integer):Integer; overload

.....

implementation

function MyF(Kolvo:Integer; MyMas: array of String):Integer;
begin
  ....
end;

function MyF(Kolvo:Integer):Integer;
begin
  MyF(Kolvo, []);
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0770 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.