Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Поле записи в виде динамического массива


Автор: Kationchic 15.4.2010, 10:44
есть запись
Код

 Tshops_in_city = record
    city: integer;
    shops: array of string[10];
  end;

и когда я пытаюсь выделить память для shops
Код

SetLength(shops_in_city[cities].shops,shops+1);

выплевывает ошибку во время выполнее.
Подскажите пожалуйста, почему такое может быть.

Автор: Frees 15.4.2010, 10:53
Цитата(Kationchic @  15.4.2010,  13:44 Найти цитируемый пост)
выплевывает ошибку во время выполнее.

какую

shops_in_city это какой тип? Tshops_in_city? почему тогда shops_in_city[cities] а не shops_in_city.shop?

Автор: Mikel 15.4.2010, 11:02
shops: array of string[10]; массив фиксированной длинны, а работаете как с динамическим SetLength(shops_in_city[cities].shops,shops+1);
shops+1 - вообще не понятно как к массиву можно прибавить единицу smile

Автор: Frees 15.4.2010, 11:09

Цитата(Mikel @  15.4.2010,  14:02 Найти цитируемый пост)
shops: array of string[10]

массив динамический string[10] это длинна каждого элемента

Автор: Mikel 15.4.2010, 13:13
Цитата(Frees @ 15.4.2010,  08:09)
Цитата(Mikel @  15.4.2010,  14:02 Найти цитируемый пост)
shops: array of string[10]

массив динамический string[10] это длинна каждого элемента

точно! загнался smile

Тогда, возможно, имелось ввиду
SetLength(shops_in_city[cities].shops,Length(shops_in_city[cities].shops)+1);

Автор: bems 15.4.2010, 20:43
И много раз увеличичивать на единицу не хорошо. Лучше один раз увеличить с запасом.

Автор: profesiachuvak 16.4.2010, 00:26
Цитата(Kationchic @  15.4.2010,  10:44 Найти цитируемый пост)
SetLength(shops_in_city[cities].shops,shops+1);


Если эта запись справедлива:
Код

....
var
shops_in_city : Tshops_in_city;
...


То для того чтобы выделить память массиву нужно писать так: 

Код

SetLength(shops_in_city.shops,shops+1);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)