Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив...


Landgraph ©   (2002-01-20 23:00:00) 

Как создать массив array[0..VAR] of type, где VAR - переменная, а не константа(по ходу не очень легко)


Anatoly Podgoretsky   (2002-01-27 16:28:00) [1]

AndrewBee (26.01.02 14:59)
И получи хорошую утечку памяти


AndrewBee   (2002-01-26 15:05:00) [2]

Ой :о))) запихнуть а не запизнуть :о))))


AndrewBee   (2002-01-26 14:59:00) [3]

Эту проблему я решаю с помощью класса TList.
Следующим образом.

Создаём запись

type
PMyRecord = ^MyRecord;
MyRecord = record
P1 : string;
P2 : integer;
P3 : array [0..10] of string;
..
.. ну и в том же духе
end;

Инициализация динaмического списка

procedure MyProc;
var MyList:TList;
i:integer;
MyRecord1:PMyRecord;
begin
MyList:=TList.Create;
for i:=0 to 100 do
begin
new(MyRecord1); // выделяем память для новой записи
MyRecord1.P1:=StrToInt(i);
MyRecord1.P2:=i;
MyRecord1.P3[0]:="рпарпарао";
..
.. ну и так далее
MyList.Add(MyRecord1);//Добавляем новую запись
end;
end;

Использование динамического списка
например : Поиск какой либо записи

function Find1:integer;
var i:integer;
MyRecord1:PMyRecord;
begin
for i:=0 to MyList.Count-1 do
begin
MyRecord1:=MyList[i];
If MyRecord1.P1=100 then
begin
result:=MyRecord1.P1;
exit;
end;
end;
end;

Только не забудь свой список хлопнуть свой список когда он уже не нужен - MyList.Free;

В TList мона запизнуть всё что угодно :о)))


Anatoly Podgoretsky   (2002-01-23 08:03:00) [4]

Landgraph (21.01.02 20:37)
На текущий моиент 4 байта


Фэ   (2002-01-22 00:24:00) [5]

SetLength(A,10); // вот здесь и возникнет размер


Landgraph   (2002-01-21 20:37:00) [6]

А когда a: array of TYPE;, сколько тогда памяти выделяется?


SAN   (2002-01-21 12:38:00) [7]

Рекомендую сразу выделять память под большой количество элементов. Проводил эксперементы с большимим объемами данных(порядка 14.000.000). Наблюдалась такая ерунда:
поначалу память выделялалось корректно, но со временем ее начинало СТОЛЬКО выделяться!!!! 2 ГБ(!!!) VM было маловато!
Потом начал выделять "пачками" по 1000 элементов. все стало ок.


Ally   (2002-01-21 11:56:00) [8]

>Landgraph
>Gunner

И ниже тоже - начиная с 4-й версии.


Gunner   (2002-01-21 11:04:00) [9]

>Landgraph
учти только то что тебе написали по моему работет только в 5 - версии делфи и выше !


Андрей Сенченко   (2002-01-21 10:34:00) [10]

a : array of ...
собственно все


Anatoly Podgoretsky   (2002-01-20 23:51:00) [11]

Бкги в сторону диначеских массивов


Наверх

Титульная страница Поиск, карта сайта Написать письмо