Показать сообщение отдельно
  #2  
Старый 07.09.2012, 10:25
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Stal12
Есть массивы константы:
WaitModem:array[0..1]of string=('Нет','Есть');
SyncTx:=array[0..2]of string=('Отсутствует','Внутренняя','Внешняя');
И т.п.

Как передать в подпрограмму такой массив, если у них различная длина?
Подпрограмма должна делать примерно следующее:
возвращает строку по нужному индексу:
Result:=NameArray[n]; //например - Внутренняя

Решение с открытыми массивами работает, но овчинка выделки не стоит.
Надо каждый раз задавать длину массива, инициализировать и т.п.
В итоге, куча "лишнего" текста... По длине получается, выгоднее иметь кучу специализированных подпрограмм.
Зачем каждый раз задавать длину массива и что-то там инициализировать?:
Код:
const
  WaitModem:array[0..1]of string=('Нет','Есть');

function Func(A: array of String; Index: Integer): String;
begin
  Result:=A[Index];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Func(WaitModem, 1));
end;
Ответить с цитированием