Вверх ↑
Ответов: 3889
Рейтинг: 362
#1: 2011-10-09 12:40:40 ЛС | профиль | цитата
login писал(а):
Как это делается?

Я подозреваю, что, в силу скомпилированности в машинный код, число операндов жёстко фиксированно и придётся предусматривать все варианты и делать ветвления, или читать дальше. Ещё есть идея попробовать работать с указателями, то есть передавать в SetLength некую переменную, в которую будем подставлять указатель на конкретный подмассив. Но на практике проверить не могу, допускает ли Delphi получение указателей на подмассивы. По идее - должен. Вы, кстати, подобную операцию уже провернули своим "ar2 := ar1" выше. Вот и шанс попробовать подставить в жёстко фиксированный SetLength (подставной_массив,переменная_размерности) "теневой" массив, полученный присвоением от целевого подмассива, и переменную размерности.

Надеюсь, я понятно объяснил идею. Сам на практике не могу пока проверить, пардон, но по самой сути указателей, должно, пожалуй, сработать. Правда, под FPC большой вопрос, так ли работают указатели на массивы и получается ли такой же "теневой" массив.
карма: 1

0