Главная страница
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.027 c
11-1169204410
Las
2007-01-19 14:00
2007.09.09
библиотека KOL


4-1174345185
Vlad-Q
2007-03-20 01:59
2007.09.09
Открытие окна броузера с заданным url


15-1185869028
Alex Konshin
2007-07-31 12:03
2007.09.09
Анализатор трейс файлов Оракл.


2-1186961034
loeg
2007-08-13 03:23
2007.09.09
HTML и Delphi


2-1187163222
grust
2007-08-15 11:33
2007.09.09
Оперативка