Задать вопрос
@InfoLabs

Как передать массив в процедуру?

Подскажите пожалуйста, почему не работает моя вариация?

Задача: Изменить глобальный двухмерный массив grid из процедуры (я в последующем ее вынесу в отдельный файл). По этому необходимо передавать как-то массив по ссылке в процедуру...

const
   matrixNumber = 5;

type
   gridType = array [1..matrixNumber, 1..matrixNumber] of array[0..2] of char;

var grid : gridType;

procedure generateStartWord(_grid: array of array of char);
var
  _word := 'тест';
begin;
  var _length := Length(_word);

if _length > 5 then
  _length := 5;
 
for var i := 1 to _length do
  _grid[3,i][2] := _word[i];
end;


Пишет: Нет индексовского свойства по умолчанию для типа char. Сразу понятно, что не выделяется память вообще.
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@InfoLabs Автор вопроса
Решение простое, вот приведу небольшой пример:
var a1,a2: array [1..10] of integer;
var b1,b2: array of integer;
a1 := a2; // копируется содержимое
b1 := b2; // копируется указатель


Что происходит? А то, что если передавать в процедуру в качестве параметра заранее статический массив, получите содержимое его, без возможности редактирования. Используйте динамические массивы. Вопрос исчерпан!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Через var переменные передаются как указатель на структуру.
Думаю, что надо так:
procedure generateStartWord(var _grid: gridType);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы