Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.01;
Скачать: CL | DM;

Вниз

получение динамического массива из функции(процедуры)   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
15-1180773532
@!!ex
2007-06-02 12:38
2007.07.01
Насти, Катюхи...


2-1181493780
GoRdon
2007-06-10 20:43
2007.07.01
Dll


2-1181288591
kotenok
2007-06-08 11:43
2007.07.01
прерывание выборки select (mysql)


15-1180637443
ыыыыы
2007-05-31 22:50
2007.07.01
Как правильно, - "генерация" или "генерирование"


1-1178129410
Nicky000
2007-05-02 22:10
2007.07.01
Фильтр с использованием ComboBox