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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 09:27   #11
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Если нет массива, то в качестве фактического параметра указывай пустой массив, то есть если это динамический массив SetLength(Arr, 0);
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 17.03.2011, 09:30   #12
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Непосредственно записать значение массива поумолчанию, действительно не удастся. Но можно и по другому.

Вариант 1: (как я уже и писал)
Код:
type
  TArr = array of Integer;

procedure MyProc1 (AArr: TArr); overload;
begin
  if AArr = nil then
    ShowMessage ('Пусто')
  else
    ShowMessage (IntToStr (Length (AArr)));
end;

procedure MyProc1; overload;
var
  AArr: TArr;
begin
  SetLength (AArr, 2);
  AArr[0] := 1;
  AArr[1] := 2;
  MyProc1 (AArr);
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyProc1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  MyProc1 (nil);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  a: TArr;
begin
  SetLength (a, 3);
  a[0] := 1;
  a[1] := 2;
  a[2] := 3;
  MyProc1 (a);
end;
Вариант 2: (почти что как procedure defArray(a: array of integer = [1, 2]);)
Код:
type
  TArr = array of Integer;

procedure MyProc2 (AArr: TArr = nil);
begin
  if AArr = nil then
    ShowMessage ('Пусто')
  else
    ShowMessage (IntToStr (Length (AArr)));
end;

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
  MyProc2;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  MyProc2 (nil);
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  a: TArr;
begin
  SetLength (a, 3);
  a[0] := 1;
  a[1] := 2;
  a[2] := 3;
  MyProc2 (a);
end;
Тут результат работы двух вариантов немного разный. Всё зависит от конкретной задачи и от того, что должно быть, если параметр не указан.
Sibedir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив как параметр функции MovsesIV Общие вопросы C/C++ 2 02.12.2010 03:07
Необязательный параметр Boolean _-Re@l-_ Общие вопросы Delphi 4 19.06.2010 19:01
Необязательный параметр TBitmap _-Re@l-_ Общие вопросы Delphi 1 17.06.2010 12:44
C++ - массив как параметр функции kefir Помощь студентам 8 12.04.2010 17:48
Динамически массив как параметр ф-ии SNUPY Помощь студентам 2 11.05.2008 01:16