Как сделать динамический массив в DelphiScript?
Извиняюсь, я новичок в написании сценариев в Altium, который использует Delphiscript. Я пытаюсь создать массив TEdit, используя входной номер из tedit. Я следил за этим сообщением , чтобы сделать teditarray. В линииType EditArray = Array of Tedit
Я получаю сообщение об ошибке "разрешены только объявления классов"
В документации Altium сказано, что вы не можете создавать новые объекты или объявлять типы массивов, но вы можете объявлять массивы для переменных. Я думаю, что это может быть причиной того, что он не позволяет мне создать новый класс Teditarray. Можно ли здесь создать новый объект или класс, чтобы решить проблему?
Вот решение, которое я в итоге использовал, но я думаю, что оно далеко от идеального: я удалил код Editarray сверху и оставил в своих объявлениях переменныхEdits : TEditArr;
который не дал мне ошибок (это не известный идентификатор, который я проверял в последний раз). Когда я нажимаю «Выполнить», это дает мне новую ошибку в цикле for:
For e in Edits do
Begin
E.Top:=Y; E.Left:=0;
INC(Y,E.Height+8)
end;
Ошибка в строке:: ожидается
Чтобы обойти все это, я попробовал статический массив:Edits : Array [0..50] of TEdit;
Затем у меня есть эта функция, которая при получении числа из первого поля редактирования проверяет целое число, а затем создает введенное количество полей редактирования:
if (TryStrtoInt(edit1.text,1)) = TRUE Then
Begin
Ports := Strtoint(edit1.text);
For a := 1 to Ports do
Begin
Edits[PRED(a)] := TEdit.Create(Self);
Edits[PRED(a)].Parent := Self;
Edits[PRED(a)].Top := Y + 344;
Edits[PRED(a)].Left := 32;
INC(Y,Edits[PRED(a)].Height+8)
end;
ShowInfo('created ports:');
end;
end;
где порты - это количество ящиков tedit, которые я хотел бы. Я все еще хотел бы, чтобы этот динамический массив работал однажды, и хотел бы знать, знает ли кто-нибудь, как это сделать.