![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив...
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]Бкги в сторону диначеских массивов