![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить эл-т многмоерного массива не зная его размерность
Кевларвестов Семен © (2007-02-01 15:04:00)Добрый день!
Вот такая вот задача есть вариантный массив AResFun: variant;
Есть массив целых чисел AIntArr array of integer в котором указаны индексы нужного элемента.
Есть ли какая нибудь функция чтоб можно было б написать что то типа AResFun[AIntArr] и, собственно, получить нужный элемент? Так как размерность массива AResFun заранее неизвестна.
Anatoly Podgoretsky (2007-02-01 22:02:00) [1]Его надо в "бабский" коллектив, как меня, тогда поймет логику.
Zeqfreed (2007-02-01 21:17:00) [2]> Jeer © (01.02.07 16:06) [4]
> Опять, блин, бабсы со своей "бабской" логикой.
Настоящие мужчины не ошибаются, ага?
Кевларвестов Семен (2007-02-01 20:02:00) [3]не надо меня в могилу. Там сыро и червяки.
А на самом деле, как обычно, нужно справку читать - ибо есть функция VarArrayGet от которой становится легко и хорошо.
Anatoly Podgoretsky (2007-02-01 19:47:00) [4]> Elen (01.02.2007 17:05:06) [6]
Это предположение, вероятно далекое от истины, кроме того в вопросе речь о многомерных массивах, к тому же неисветного типа и даже неизвестно динамических или статических.
Но мне не нравится постановка задачи у автора, оторваные от массива индексы, верный путь в могилу и очень мучительный.
Anatoly Podgoretsky (2007-02-01 19:45:00) [5]> Elen (01.02.2007 15:08:01) [1]
High(AResFun); даст не размерность, а верхнею его границу. Length даст размерность, от которой правда толку мало.
Elen (2007-02-01 17:05:00) [6]
> С учетом, что Вы do Врите( - размерность масива дает Length().
C учетом что массив скорее всего начинаться с 0, значит High и Length дадут одинаковые значения
Vlad Oshin (2007-02-01 16:54:00) [7]function GivEl(AResFun: variant; ar:array of integer):variant;
var
siz1:longint;
i:integer;
t:variant;
begin
siz1:=length(ar);
for i:=0 to siz1-1 do begin
t:=AResFun[ar[i]];
AResFun:=t;
end;
result:=t;
end;
Jeer (2007-02-01 16:06:00) [8]
> Elen © (01.02.07 15:08) [1]
> High(AResFun); даст размерность
Опять, блин, бабсы со своей "бабской" логикой.
С учетом, что Вы do Врите(- размерность масива дает Length().
Elen (2007-02-01 15:29:00) [9]
> кто ее знает - какая n будет.
for i:=low(массив) to high(массив) do Врите(массив[i]); Сколько бы не было элементов она пройдет их всех
Кевларвестов Семен (2007-02-01 15:22:00) [10]нет, ну дать то она ее даст, но как вытянуть элемент?
Я знаю только один способ: AResFun[AIntArr[0],...AIntArr[n]].
И это бы сработало, но к сожалению кто ее знает - какая n будет.
Вот собственно и вопрос можно ли как-то эти индексы вбивать автоматом?Причем, неизвестно сколько их там штук будет.
Elen (2007-02-01 15:08:00) [11]
> Так как размерность массива AResFun заранее неизвестна
High(AResFun); даст размерность