openlang

Объявление массива с постоянными строками

Можно ли в Delphi объявить массив строк способом, похожим на пример ниже?

{'alpha','beta','gamma'}
Переведено с английскогоПоказать оригинал

Разговор продолжается 4

Следуя доводам
  1. Ссылка на ответ

    Можно также воспользоваться динамическими массивами, как в этом примере:

    var
      CachedLabels: TArray<string>;
    
    function ReadLabels: TArray<string>;
    begin
      if Length(CachedLabels) = 0 then
        CachedLabels := TArray<string>.Create('Alpha', 'Beta', 'Gamma');
      Result := CachedLabels;
    end;

    Хотя здесь динамический массив в куче инициализируется во время выполнения, пример показывает «псевдоконструктор» динамических массивов Delphi, позволяющий инициализировать их прямо в месте использования. (ПРИМЕЧАНИЕ: этот пример не является потокобезопасным).

    Чтобы получить длину массива, достаточно вызвать стандартную функцию Length(), а для определения допустимого диапазона индексов воспользоваться стандартными функциями Low() и High().

    В старых версиях Delphi замените TArray собственным типом динамического массива строк, например:

    type
      TLabelArray = array of string;
    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Есть и обходной путь. Напишите такую функцию:

    procedure copyLabels(var destination: ArrayOfString; const source: Array Of String);
    var
      count, index: Integer;
    begin
      count := Length(source);
      SetLength(destination, count);
      for index := count-1 downto 0 do
        destination[index] := source[index];
    end;

    затем вызовите эту функцию следующим образом:

    copyLabels(labels, ['LabelA', 'LabelB', 'LabelC']);

    где:

    labels: ArrayOfString;
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как случайно выбирать варианты enum в GDScript на Godot 3.3, не перечисляя их?

    Вот объявление enum, которое я использую в GDScript: Хочу случайно выбирать вариант enum, не перечисляя все возможные вариант…

    Ответы 2Последняя активность gdscript
  2. Синтаксис остатка в Nim

    Как в Nim записать операцию взятия остатка? cell % 7 == 0 выдаёт undeclared identifier: '%' Ни поиск в Google, ни просмотр SO…

    Ответы 2Последняя активность nim
  3. Возврат результата из функции APL

    Как сделать так, чтобы моя функция возвращала значение после завершения выполнения? Например, у меня есть: ROUTINE N ? N ⍴ 12…

    Ответы 2Последняя активность apl