Вопрос по синтаксису

отредактировано 00:20 Раздел: FastScript
Здравствуйте,
как обращаться к многомерным массивам?
пример:

var
v:array of variant;
begin

setlength(v,5);

v[0]:=vararraycreate([0,5],varvariant);

v[0][0]:='55'; - не работает
v[0,0]:='55'; - не работает

end.

Комментарии

  • отредактировано 00:20
    Так же как и в Delphi:

    array [0..5, 0..5] of integer;
  • отредактировано 00:20
    к чему этот ответ?

    Вопрос: как обратиться к многомерному массиву, с объявлением то все понятно.
    конструкция массив[индекс1][индекс2] не работает.
  • отредактировано 00:20
    var
      v:array [0..5, 0..5] of variant;
    begin
      v[0,0]:='55';
      v[1,2]:='55';
    end.
    
    Работает.
    Или вам нужны именно динамические двумерныйе масивы?
  • отредактировано 00:20
    Да, именно динамические. Так не работает:

    var
    v:array of variant;
    begin
    setlength(v,5);
    v[0]:=vararraycreate([0,5],varvariant);

    v[0,0]:='55';
    end.
  • отредактировано July 2005
    var
       v:array [0,0] of variant;
    begin
       v := VarArrayCreate([0,10],varvariant);
       v [1, 4] := '55';
    end.
    
    Теперь и так работает.
  • отредактировано 00:20
    Спасибо, Serg
  • отредактировано 00:20
    Сразу не проверил, но это тоже не то.

    Вторая размерность - фикция. Например,

    var
    v:array [0,0] of variant;
    begin
    v := VarArrayCreate([0,10],varvariant);
    v [1, 4] := '4';
    v [1, 5] := '5';

    showmessage(v[1,4]+' '+v[1,5]); - Напечатает "5 5"
    end.
  • отредактировано 00:20
    Хотелось бы получить ответ.
    Или лучше писать в поддержку?
  • отредактировано July 2005
    См. делфийский хелп по VarArrayCreate.

    var
    ar: Variant;
    begin
    ar := VarArrayCreate([0,2,0,3], varInteger);
    ar[0,0] := 1;
    ar[1,1] := 2;
    ShowMessage(VarToStr(ar[0,0]) + ' ' + VarToStr(ar[1,1]));
    end.
  • отредактировано 00:20
    Я делал так:

    var
    a: array of Variant;
    v: Variant;

    begin
    SetLength(a, 2);

    v := VarArrayCreate([0, 1], varVariant);
    v[0] := '1';
    v[1] := '2';
    a[0] := v;

    v := VarArrayCreate([0, 1], varVariant);
    v[0] := '3';
    v[1] := '4';
    a[1] := v;

    v := a[0];
    ShowMessage(v[0]+' '+v[1]);

    v := a[1];
    ShowMessage(v[0]+' '+v[1]);
    end.

    К тому же, как я понимаю, параметры задаваемые в функции VarArrayCreate являются ГРАНИЦАМИ массива. Т.е. в приведенном выше примере создается массив v размерности 0..1.

    С уважением, Забурдаев Юрий

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.