![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получение динамического массива из функции(процедуры)
novice © (2007-06-08 18:46:00)Нужна помощь в реализации .
Есть процедура(функция) должна возвращать список целых чисел, размер списка неизвестен заранее.
Манипуляции
с TIntegerDynArray и SetLength результат не дали, либо не так делаю.
Jeer (2007-06-09 12:47:00) [1]да заговорился:))
clickmaker (2007-06-09 12:27:00) [2]см. procedure DynArraySetLength в System.pas, в общем
clickmaker (2007-06-09 12:20:00) [3]
> Локальных внутри функции ?
var a: array of integer;
setlength(a, 200000); - в стеке?
Jeer (2007-06-09 12:12:00) [4]
> begin...end © (09.06.07 10:21) [7]
Локальных внутри функции ? вроде - да.
Или я чего-то пропустил ?
begin...end (2007-06-09 10:21:00) [5]> Jeer © (09.06.07 09:59) [6]
> С локальными массивами лучше поаккуратней - стек не резиновый.
А что, тела динамических массиов теперь размещаются в стеке? Я что-то пропустил?
Jeer (2007-06-09 09:59:00) [6]novice (08.06.07 18:46)
Ничто не мешает это сделать даже так:
type TIntArray = array of integer;
var arInt: TIntArray;
procedure MyProc(var arI: TIntArray);
begin
//
SetLength(arI, 10);
arI[0] := 0;
arI[1] := 1;
arI[2] := 2;
//
end;
MyProc(arInt);
>я делал локальную переменную массива, а потом
>result:=local_array;
С локальными массивами лучше поаккуратней - стек не резиновый.
Однокамушкин (2007-06-09 09:05:00) [7]
> isasa © (08.06.07 21:56) [2]
> В любомьалгоритме должен быть прогнозируемый возврат(надеюсь
> ты не всю Вселенную хочешь). Если не заданно сколько, скажи
> сколько надо ...
Спорный вопрос... в функциональных языках с ленивым вычислением можно вообще объявлять структуры с бесконечным размером и спокойно работать с ними... расчёт на то, что любой алгоритм за конечное время доберётся только до конечного числа элементов такой структуры, а за счёт ленивого вычисления эти элементы реально появляются в структуре только тогда, когда в них возникает необходимость...
> novice (08.06.07 22:27) [4]
> я делал локальную переменную массива, а потом
> result:=local_array;
Вполне нормальный вариант, должно работать...
novice (2007-06-08 22:27:00) [8]
> В любомьалгоритме должен быть прогнозируемый возврат(надеюсь
> ты не всю Вселенную хочешь).
прогнозируемый возврат есть,
но зачем же тогда динамические массивы придумали ?
2 Джо
спасиб, попробую
я делал локальную переменную массива, а потом
result:=local_array;
Джо (2007-06-08 22:00:00) [9]function A: TDynArray;
begin
SetLength (Result, L);
Result[N] := ...
end;
isasa (2007-06-08 21:56:00) [10]В любомьалгоритме должен быть прогнозируемый возврат(надеюсь ты не всю Вселенную хочешь). Если не заданно сколько, скажи сколько надо ...
Desdechado (2007-06-08 19:20:00) [11]> либо не так делаю.
Как "не так"?