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