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


Автор: zvyagaaa 9.5.2009, 13:46
Здравствуйте, уважаемые.  Для хранения в памяти данных о линиях на канве использую записи
Код

type
TLine =record
  Points:array of TPoint;  //ее точки
  Startpanel:Integer; //начальная панелька
  Endpanel:Integer;  //конечная панелька
  StartPoint:TPoint; //начальная точка
  EndPoint:TPoint; //конечная точка
  Level:integer;  // уровень вертикальной линии
//  row: Integer; //кабельный ряд
end;

...
var
...
  Lines : array of TLine;


Т.е. получается двумерный динамический массив.
В требуемом месте программы я увеличиваю массив Lines
Код

  SetLength(Lines,Length(Lines)+1);

Пытаюсь вот таким образом увеличить количество точек в текущей (последней) линии
Код

for n:=0 to ... do
with Lines[High(Lines)] do
     begin
     SetLength(Points,Length(Points)+1);
     Points[n]:=   FPointArray;
     end;

Почему-то работает только в первый раз, во второй раз не увеличивает количество точек, а очищает массив (судя по дебаггеру).
Помогите, пожалуйста  smile 

Автор: Демо 9.5.2009, 16:45
Цитата(zvyagaaa @  9.5.2009,  13:46 Найти цитируемый пост)
 Points[n]:=   FPointArray;


Почему Points[n], а не Points[High(Points)]?

И что такое FPointArray?

Автор: zvyagaaa 9.5.2009, 19:40
Похоже, что это дебаггер гнал что-то - перезапустил студию - все встало на свои места.
А на вопросы ответы - 
потому что у меня не получалось следующее
    with Lines[High(Lines)] do Points := FPointArray; (сейчас заработало), и я думал по одной точке загрузить в массив.

Автор: Christoph 9.5.2009, 22:34
мне кажется будет лучше не выделять память под новую запись, а использовать TList

Автор: MetalFan 10.5.2009, 08:57
Цитата(zvyagaaa @  9.5.2009,  19:40 Найти цитируемый пост)
with Lines[High(Lines)] do Points

под отладкой значение Points в такой конструкции можно и не увидеть, или увидеть, но не то...

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