Главная страница
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.019 c
2-1181129557
TIF
2007-06-06 15:32
2007.07.01
Картинки в Браузере


2-1181303716
koha
2007-06-08 15:55
2007.07.01
на странный глюк нарвался


2-1181207740
alienff
2007-06-07 13:15
2007.07.01
FTP


15-1180804496
Sh7777
2007-06-02 21:14
2007.07.01
вопрос


15-1180976019
oldman
2007-06-04 20:53
2007.07.01
Объявление. В связи с моей защитой.