Текущий архив: 2002.03.28;
Скачать: CL | DM;
ВнизМассив... Найти похожие ветки
← →
Landgraph (2002-01-20 23:00) [0]Как создать массив array[0..VAR] of type, где VAR - переменная, а не константа(по ходу не очень легко)
← →
Anatoly Podgoretsky (2002-01-20 23:51) [1]Бкги в сторону диначеских массивов
← →
Андрей Сенченко (2002-01-21 10:34) [2]a : array of ...
собственно все
← →
Gunner (2002-01-21 11:04) [3]>Landgraph
учти только то что тебе написали по моему работет только в 5 - версии делфи и выше !
← →
Ally (2002-01-21 11:56) [4]>Landgraph
>Gunner
И ниже тоже - начиная с 4-й версии.
← →
SAN (2002-01-21 12:38) [5]Рекомендую сразу выделять память под большой количество элементов. Проводил эксперементы с большимим объемами данных(порядка 14.000.000). Наблюдалась такая ерунда:
поначалу память выделялалось корректно, но со временем ее начинало СТОЛЬКО выделяться!!!! 2 ГБ(!!!) VM было маловато!
Потом начал выделять "пачками" по 1000 элементов. все стало ок.
← →
Landgraph (2002-01-21 20:37) [6]А когда
a: array of TYPE;
, сколько тогда памяти выделяется?
← →
Фэ (2002-01-22 00:24) [7]SetLength(A,10); // вот здесь и возникнет размер
← →
Anatoly Podgoretsky (2002-01-23 08:03) [8]Landgraph (21.01.02 20:37)
На текущий моиент 4 байта
← →
AndrewBee (2002-01-26 14:59) [9]Эту проблему я решаю с помощью класса 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 мона запизнуть всё что угодно :о)))
← →
AndrewBee (2002-01-26 15:05) [10]Ой :о))) запихнуть а не запизнуть :о))))
← →
Anatoly Podgoretsky (2002-01-27 16:28) [11]AndrewBee (26.01.02 14:59)
И получи хорошую утечку памяти
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c