Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
3-1175679671
Сергей Ю
2007-04-04 13:41
2007.07.01
Открыть приложение с IBQuery на другой машине


2-1180954133
ыавпып
2007-06-04 14:48
2007.07.01
удалить и создать БД


15-1180602474
AntiUser
2007-05-31 13:07
2007.07.01
Скока время?


15-1180950138
Gydvin
2007-06-04 13:42
2007.07.01
Не кто случаем не встречал


1-1178093554
IGray
2007-05-02 12:12
2007.07.01
Работа с настройками проложения - что нужно учесть?




   Наверх