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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2014, 10:17   #1
bro
Пользователь
 
Аватар для bro
 
Регистрация: 02.12.2010
Сообщений: 29
По умолчанию Использование синтаксиса Delphi XE7

Добрый день. Довольно много кода уже написал с использованием нового синтаксиса массивов (XE7), очень удобно (http://docwiki.embarcadero.com/RADSt...Dynamic_Arrays). Но тут столкнулся с ошибкой компиляции:
Код:
unit Unit1;

interface

type
  ArrArrStr = array of array of string;
  ArrStr = array of string;

var
  MyArrArr: ArrArrStr = [['один', 'два']];

implementation

  function CharConvert: ArrStr;
  begin
    Result := [];
    Result := Result + MyArrArr[0];
  end;

end.
E2010 Incompatible types: 'ArrStr' and 'Dynamic array'

Но пардон, какой же это Dynamic array, если элемент ArrArrStr это как раз таки ArrStr? Почему их нельзя сложить?

В связи с этим, вопрос: как правильно поступить в данной ситуации? Можно, конечно, по старинке складывать массивы через SetLength() и присваивание поэлементно (так и сделал пока), но может есть способ обойти данную ситуацию?
bro вне форума Ответить с цитированием
Старый 20.12.2014, 10:50   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,950
По умолчанию

Код:
var
MyArrArr: ArrArrStr = [['один', 'два']];
Так нельзя. Нужно хотя бы заранее размерность указать примерно так
Код:
const
MyArrArr: array[0..0,0..1] of string = (('один', 'два'));
Проще складывать поэлементарно
Кстати, а почему в [квадратных скобках]?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 20.12.2014, 11:25   #3
bro
Пользователь
 
Аватар для bro
 
Регистрация: 02.12.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Код:
var
MyArrArr: ArrArrStr = [['один', 'два']];
Так нельзя. Нужно хотя бы заранее размерность указать примерно так
Код:
const
MyArrArr: array[0..0,0..1] of string = (('один', 'два'));
Проще складывать поэлементарно
Кстати, а почему в [квадратных скобках]?
Так можно, это же XE7, о чём я и упомянул в заголовке. Да и размерность массивов у меня везде изменяется.

С проблемой справился так (спать нужно больше... элементарные вещи от меня уже ускользают):
Код:
interface

type
  ArrStr = array of string;
  ArrArrStr = array of ArrStr;

var
  MyArrArr: ArrArrStr = [['один', 'два'], ['три','четыре']];

implementation

  function CharConvert: ArrStr;
  begin
    Result := [];
    Result := Result + MyArrArr[0]+MyArrArr[1];
  end;

end.
Пардон за создание глупой темы.
bro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка KOL в Delphi XE7 Aqel Компоненты Delphi 3 20.12.2014 18:18
Delphi xe7 bluetooth андройд Volt Общие вопросы Delphi 2 12.12.2014 13:34
Не могу подружить Delphi XE7 с Android эмулятором vanoid1 Общие вопросы Delphi 7 02.12.2014 17:18
Разработка под Android (Delphi XE7) kta87 Общие вопросы Delphi 33 27.10.2014 19:15
Delphi XE7 & Genymotion NEoMASTERR Общие вопросы Delphi 3 04.10.2014 22:22