Delphi. Возможно ли такое? - Вопросы по Delphi

Вопрос Delphi. Возможно ли такое?

Регистрация
29 Май 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Не надо писать гадости, просто ответьте если ли такая возможность. Вопрос странный, и скорее всего такое реализовать не возможно, но мне просто интересно. Допустим есть процедура с 11 параметрами (procedure setArray(var arr : TArray; a1,a2,...a10 : integer)) и чтобы не писать arr[1] := a1; arr[2] := a2; и т. д. можно ли написать через цикл что-то вроде for i := ...do arr := a{!!!} а в месте {!!!} написать при помощи каких-то спец символов или еще какими-либо махинациями переменную i которая будет относится как бы к коду программы и также изменятся т. к. это счетчик? Я понимаю что написать 10 строк не так уж и сложно, но мне все же любопытно.
 
Регистрация
16 Ноя 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Можно, если использовать динамически выделенную память. Это довольно легко. Можно передать в подпрограмму адрес на начало массива, а в программе устроить цикл и при каждой итерации цикла увеличивать адрес на 1 и присваивать значение ячейки памяти вашему массиву в подпрограмме. Но для этой темы вам нужно изучить тему указателей и динамической памяти
 
Регистрация
26 Янв 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
1 а в процедуру передавать не параметры а массив религия не позволяет ? 2 в других языках можно получить количество аргументов и сами их в виде массива с помощью какой нибудь func_get_args() погугли может найдешь то же самое в делфях 3 нормальный йазык учить не судьба?
 
Регистрация
21 Дек 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
Можно, через легкий мухлеж с указателем стека. Но с листа я это дело не напишу (тем более, что тут понадобится ассемблерная вставка), к тому же такие фокусы крайне чреваты в смысле общей стабильности работы программы. Другой вариант - передавать твои переменные через array of const (смотри сырцы функции Format).
 
Регистрация
27 Июл 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Думаю нельзя. Но здесь переменные a1, a2... уже предполагают, что проще ввести переменную массив. Еще как вариант сослаться по адресу переменной a, так как все эти переменные будут переданы через стек, то смещая адрес гарантированно получим следующую, но мне проще написать 10 строк кода, чем играться адресами стека. Усе, свое мнение сказал и ушел спать! Удачи!
 
Сверху Снизу