Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2010, 11:31   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Необязательные параметры в процедуре.

Необходимо написать процедуру типа
Код:
Procedure Proc(A [,B,C,D,E] : Integer);
В которой обязательным парметром будет только A, остальные - опционально.

Писать несколько функций с OverLoad или есть другой выбор?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.07.2010, 11:44   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

к примеру
Код:
procedure Proc(Id: Integer; Params: TList);
т.е. по сути варьирующиеся параметры это указатели на какие то данные / классы, потом исходя из Id к примеру вы будете подозревать какие и сколько параметров в Params но проверить их можно к примеру на NIL или если класс то через Is
BOBAH13 вне форума Ответить с цитированием
Старый 29.07.2010, 11:46   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Суть ясна, спасибо.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.07.2010, 12:06   #4
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

можно так:
Код:
procedure Proc(a: integer; b: integer=0; c: integer=0; d: integer=0; e: integer=0);
в таком варианте "а" обязательный параметр, остальные нет и значение по умолчанию 0
x128 вне форума Ответить с цитированием
Старый 29.07.2010, 12:10   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

А механизм параметров по умолчанию не устраивает? Используется примерно так:

Код:
procedure TestParam(s: string; s1: string = '');
begin
  if s1 <> '' then ShowMessage(s1)
  else ShowMessage(s);
end;

........

procedure TForm1.Button1Click(Sender: TObject);
begin
  TestParam('asda');
  TestParam('asdas', 'Упс...');
end;
Баламут вне форума Ответить с цитированием
Старый 29.07.2010, 12:25   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
А механизм параметров по умолчанию не устраивает? Используется примерно так:

Код:
procedure TestParam(s: string; s1: string = '');
begin
  if s1 <> '' then ShowMessage(s1)
  else ShowMessage(s);
end;

........

procedure TForm1.Button1Click(Sender: TObject);
begin
  TestParam('asda');
  TestParam('asdas', 'Упс...');
end;
А если 3 параметра?
BOBAH13 вне форума Ответить с цитированием
Старый 29.07.2010, 12:28   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще лучше открытым массивом
Код:
procedure TestParam(a:array of string);
begin
  if a[0] <> '' then ShowMessage(a[0])
  else if high(a)=1 then ShowMessage(a[1]);
end;

........

procedure TForm1.Button1Click(Sender: TObject);
begin
  TestParam(['asda']);
  TestParam(['asdas', 'Упс...']);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2010, 12:34   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Есть ещё массивы констант http://programmersforum.ru/showpost....9&postcount=10, используются когда нужно передать в произвольном порядке любое количество параметров любого типа (функция format, например).
пыщь
JTG вне форума Ответить с цитированием
Старый 29.07.2010, 12:45   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если не секрет, то где это и как используется? Просто в голову не приходит, зачем это нужно.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 29.07.2010, 12:51   #10
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
А если 3 параметра?
Да хоть сотню!
По крайней мере это будет лучше, чем через overload, как предполагал ТС.
Баламут вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необязательные параметры метода -как? boris-blade Общие вопросы .NET 2 24.03.2010 03:42
Закрытие в процедуре. segail Microsoft Office Excel 4 17.03.2010 17:16
Как передать в поток параметры? И как из потока параметры достать? Anekdot Общие вопросы Delphi 2 19.02.2010 22:40
проблема в процедуре. ssi Помощь студентам 4 25.01.2010 09:36