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

Как осуществить динамическое расширение массива?

Привет.

Есть следующий
код
TEat = record
	EatName: string;
	EatCount: integer;
end;

....

var
	Eat: Array of TEat;

....

function AddEat(var Eat: TEat; EatName: string; EatCount: integer;): string;
begin
	SetLength(Eat,Length(Eat)+1);
	Eat[Length(Eat)].EatName:=Eatname;
	Eat[Length(eat)].EatCount:=EatCount;
        result:='Создан юнит еды '+Eat[length(eat)].EanName+' в количестве '+Eat[Length(eat)].EatCount+' штук.';
end;


Который, как мы видим, при вызове функции AddEat, теоретически, должен расширять массив Eat ровно на один элемент и добавлять в него параметры, которые передаются функции AddEat. Но видимо, я что-то не то делаю ибо это не работает. Прошу помощи.
  • Вопрос задан
  • 2532 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@BlueRay
Если в Delphi индексация массива с нуля (уже не помню, вдруг с единицы), то доступ к последнему элементу осуществляется не через Eat[Length(Eat)], а через Eat[Length(Eat) - 1].
Ответ написан
Комментировать
svd71
@svd71
обычно я делеаю такие штуки так:
i := Length(Eat);
SetLength(Eat, i+1);
Eat[i].EatName := Eatname; 
Eat[i].EatCoun t:= EatCount;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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