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

Вниз

вопрос по массиву   Найти похожие ветки 

 
Zebra   (2007-08-08 16:03) [0]

Можно ли объявить безразмерный массив.


 
Плохиш ©   (2007-08-08 16:04) [1]


> Zebra   (08.08.07 16:03)  
> Можно ли объявить безразмерный массив.

array of ...


 
DVM ©   (2007-08-08 16:11) [2]

Нельзя. У любого массива есть размер. Пусть даже нулевой.
Можно объявить массив с динамически изменяемым в процессе работы программы размером - см [1].


 
Котик Б   (2007-08-08 16:31) [3]


> DVM ©   (08.08.07 16:11) [2]
> Нельзя. У любого массива есть размер. Пусть даже нулевой.
>

Можно :)

type
 TMyArray = array of...


 
DVM ©   (2007-08-08 17:25) [4]


> Котик Б   (08.08.07 16:31) [3]


> type
>  TMyArray = array of...

И где здесь массив? Этой строкой вы объявили новый тип типа массива. Но не сам массив.

А вот

var
 m: TMyArray;

объявит массив и его размер равен 0. Т.е. размер у него все таки есть. :)


 
Anatoly Podgoretsky ©   (2007-08-08 21:04) [5]

> Zebra  (08.08.2007 16:03:00)  [0]

Нельзя - компьютер лопнет.


 
JanMihail ©   (2007-08-08 22:46) [6]

Пишешь
a: array of ....

.......
SetLength(a, <размер>);


 
DVM ©   (2007-08-09 10:52) [7]


> SetLength(a, <размер>);

Так это же не безразмерный :) Надо безразмерный.


 
l_v   (2007-08-09 11:24) [8]

что есть безразмерный наверное бесконечный, что есть бесконечность - число деленное на ноль, объявлять так надо тогда:
Setlength(massiv,(1/0));
:)


 
tesseract ©   (2007-08-09 13:00) [9]


> Так это же не безразмерный :) Надо безразмерный.


Безразмерный в память не влезет :-) можно без явных размеров - через указатель, но память всё равно придяться выделить.


 
NONAME01   (2007-08-13 13:08) [10]

Массивы бывают СТАТИЧЕСКИЕ или ДИНАМИЧЕСКИЕ, тут нет сабжа.


 
patrushevd1982 ©   (2007-08-13 23:18) [11]

Блин,... надо же ПРОЩЕ человеку объяснять:
var
 a: array of integer; //массив неизвестной длины
 i: integer;
begin
 setlength(a, 0); //убить массив
 setlength(a, length(a) + 1); //добавить место в массиве (увеличить его)
 a[length(a) - 1]:= b; //в это место (в последний элемент) записать значение b
 for i:= 0 to length(a) - 1 do
   //работаем с массивом в цикле
//и т.д и т.п.
end;


 
MasterOfReasons ©   (2007-08-14 02:32) [12]

На самом деле. После каждой записи в массив значений, просто увеличивай его длину.
А ещё лучше создай процедуру типа:
...
Procedure AddVolue(Out Arr: Array of Integer;Const NewVolue: Integer);
Begin
 SetLength(arr,Length(arr)+1);
 Arr[Length(arr)-1]:= NewVolue;
end;
...

И теперь созадавай любой динамический массив и с помощью этой функции записывай в него бесконечное количество элементов(хотя размер массива  в Delphi ограничен 2 Гб, если ты пишешь под Windows и 64 kb, если ты пишещь под DOS.Т.е. создать бесконечный массив невозможно в приципе)



Страницы: 1 вся ветка

Текущий архив: 2007.09.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1183193886
JanMihail
2007-06-30 12:58
2007.09.09
Как узнать, какой курсор в данный момент


15-1186600345
anton773
2007-08-08 23:12
2007.09.09
службы виндовс


2-1187263881
gentos
2007-08-16 15:31
2007.09.09
закрытие fsMDIChild формы


2-1187100069
neodream
2007-08-14 18:01
2007.09.09
Автозаполнение в TEdit


15-1187131986
iZEN
2007-08-15 02:53
2007.09.09
Что нужно сделать в Windows, чтобы запретить установку