Найдено 26 результатов

ZW
02.11.2006 20:00:24
Форум: Free Pascal Compiler
Тема: память - EOutOfMemory : Out of memory
Ответы: 7
Просмотры: 8560

память - EOutOfMemory : Out of memory

Объясните пожайлуста такой момент: программа при достижении примерно чуть больше 2 Гбайтов вываливается с EOutOfMemory : Out of memory.
Что нибудь можно с этим сделать?
ZW
15.09.2006 17:06:16
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

Mirage писал(а):Эффективное всеучитывающее копироваание дин. массива осуществляет функция Copy. RTFM наконец.


А практика показывает другое:( если массивы из массива, то действительно работает. а если все скопом, то почему меняя данные в полученном массиве, меняешь данные и в исходном.
ZW
15.09.2006 17:04:30
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901



если тип элемента масива простой (т.е. не дин. масив или длинная строка) например integer то можно с помощью move



Погоди, в случае статичных массивов должно работать присваивание



если в TMyType встречаеться дин.масив или длинная строка то тогда наверное поэлементного копирования не ...
ZW
13.09.2006 09:03:55
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

Cheb писал(а):А чем вас не устраивает банальная перестановка элемента с хвоста на место освобождаемого? Или порядок важен?


Желательно сохранить порядок.
ZW
13.09.2006 02:24:05
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

Совсем идиотский вопрос: как сделать полную копию динамического массива(или записи) в другую переменную, а не отзеркалировать адрес, по которому хранятся данные?
ZW
12.09.2006 23:34:23
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

Вот что сам Мартин (автор MSEgui ) пишет :


Martin
==================
Simplified version without dynarrayelesize:

"
type
integerarty = array of integer;
yourrecty = record
a: integer;
b: string;
c: integerarty;
end;
yourrecarty = array of yourrecty;

procedure deleteitem(var value ...
ZW
09.09.2006 21:28:34
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901


Перестаньте стучаться в закрытую дверь - используйте связанные списки, типа :

rec1 = record
value: integer;
.. ( your data structures )
prev: ^rec1;
nex: ^rec1;
end;

Тогда удаление будет заключаться в освобождении памяти и корректировке "prev" & "next" соседних елементов - всего 3 команды ...
ZW
09.09.2006 14:18:05
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901



закинь сюда описание типа.

Control = record
speed:integer;
end;

DS1 = record
path:array of integer;
flagp:byte;
temp:array of integer;
etemp:array of Control;
end;
xarray = array of DS1;//это для процедуры удаления
DS2 = record
x:array of DS1;
flagx:byte;
Y ...
ZW
09.09.2006 11:38:28
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

работает нормально только при удалении последнего элемента:(
Вполне нормальная ситуация, если данные в памяти расположатся фрагментарно или в куче. "Move" сработает корректно только если для непрерывных областей. Поэтому позаботьтесь о минимальном размере данного массива - вместо больших элементов ...
ZW
09.09.2006 01:53:02
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

работает нормально только при удалении последнего элемента:(
ZW
08.09.2006 00:50:48
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901


Нет, я ему вместо integerarty прописал array of integer


А зря. Есть в FPC такой баг-перестраховка на Var-аргументах :

------------------

работает на "ура"


Я тоже не сразу понял, почему автор MSEgui всегда объявляет новый тип для открытых массивов.

Мда... до этого я бы фиг додумался ...
ZW
07.09.2006 17:21:41
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

SergKam писал(а):а может компилятор не понимает что такое integerarty; ?


Нет, я ему вместо integerarty прописал array of integer
ZW
07.09.2006 15:40:54
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

debi12345 писал(а):
А если перевести на массив указателей : array of ^x ?

"Там" есть такая же процедура для указателей. Хотя и возня с динамической памятью, но обычно так и делается.


А как перевести и как с ним работать?
ZW
06.09.2006 23:00:05
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

Спасибо за информацию. Но неполучается.
У меня такая структура данных:
p[j].x[y]
То есть p : array of x;

Убирать надо элемент x (то есть массив) из p[j]
Исходная процедура такая:
procedure deleteitem(var dest: integerarty; index: integer);
begin
if (index < 0) or (index > high(dest)) then ...
ZW
04.09.2006 20:38:40
Форум: Free Pascal Compiler
Тема: Самый эффективный способ удалить элементы в массиве
Ответы: 30
Просмотры: 30901

Самый эффективный способ удалить элементы в массиве

Есть запись в которой присутствует динамический массив, периодически необходимо из массива выносить элементы по какомуто критерию. Возникает вопрос каким наиболее эффективным способом это сделать?
У кого нибудь есть идеи?