Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1178253295
pohil
2007-05-04 08:34
2007.07.01
CDATA в XML


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


2-1181209731
МинЗдрав
2007-06-07 13:48
2007.07.01
Ошибка какая то...


2-1181210608
leonidus
2007-06-07 14:03
2007.07.01
Проблема с обращением к dll


2-1181124612
Wolferio
2007-06-06 14:10
2007.07.01
Excell количество Листов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский