Вверх ↑
Этот топик читают: Гость
Ответов: 1429
Рейтинг: 50
#1: 2011-10-07 05:16:44 ЛС | профиль | цитата
Динамический string/integer массив для FTCG:
ft_array.rar

Снято ограничение на размер массива.
Добавлены точки doAdd(добавить запись в конец массива), и doSetLength(установить размер массива)

В архиве массив, и элемент записи к нему.
Для чтения используйте стандартный ArrayRead.

Благодарность: 1nd1g0
---------------------------------------------------------------------------------------------------
Новая версия:

Добавлена точка doClear.
ft_array_2.rar
карма: 0

0
файлы: 2ft_array.rar [3KB] [250], ft_array_2.rar [2.7KB] [273]
Ответов: 3889
Рейтинг: 362
#2: 2011-10-07 09:14:51 ЛС | профиль | цитата
login,
println(a_size, ' := ', a_size,' - 1;')
println(Array, '[',a_size,'] := ',Value,';')


println(Array, '[High(',Array,')] := ',Value,';')

карма: 1

0
Ответов: 1429
Рейтинг: 50
#3: 2011-10-07 09:24:38 ЛС | профиль | цитата
1nd1g0, High(',Array,') это функция, она работает медленнее чем разность, я ее специально не взял, потому, что у меня уже есть ее значение.
карма: 0

0
Ответов: 3889
Рейтинг: 362
#4: 2011-10-07 09:29:46 ЛС | профиль | цитата
login писал(а):
она работает медленнее чем разность

println(' dec ', a_size,';')
println(Array, '[',a_size,'] := ',Value,';')

карма: 1

0
Ответов: 1429
Рейтинг: 50
#5: 2011-10-07 09:35:33 ЛС | профиль | цитата
Прикольно
со скобками работает:

#pas
println(' dec (', a_size,');')
println(Array, '[',a_size,'] := ',Value,';')
карма: 0

0
Ответов: 3889
Рейтинг: 362
#6: 2011-10-07 09:38:33 ЛС | профиль | цитата
login писал(а):
со скобками работает

Да, пардон, забыл, что это не ассемблер, тут это как процедура оформлено, но, если не ошибаюсь, компилируется в прямой код, без ветвлений.
карма: 1

0
Ответов: 1429
Рейтинг: 50
#7: 2011-10-07 10:24:33 ЛС | профиль | цитата
Я уже мечтаю сделать array of array, там в FTCG с ним есть сложности.
И тогда добавлю сюда.
------------ Дoбавленo в 10.24:
1nd1g0, если я очищаю массив как "SetLength = 0", физическая память освобождается? Или надо как-то иначе очищать массив?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#8: 2011-10-07 12:26:15 ЛС | профиль | цитата
login писал(а):
если я очищаю массив как "SetLength = 0", физическая память освобождается? Или надо как-то иначе очищать массив?

Если Вы говорите о менеджере памяти самого приложения, то - да, AFAIK, он сможет выделить память из-под освободившегося ("хвоста") массива под другие нужды, когда её будет не хватать в других местах. Если же речь о операционной системе, то на массив остаётся ссылка, скорее всего, сегмент будет закреплён за приложением и, максимум, будет выгружен в файл подкачки при распределении памяти на уровне ОС. Полное уничтожение массива и памяти из-под него, полагаю, произойдёт только если на него далее не будет ссылок и ему присвоят nil, или применят Finalize(массив). Проверить пока не могу.
карма: 1

0
Ответов: 1429
Рейтинг: 50
#9: 2011-10-07 12:32:29 ЛС | профиль | цитата
ок, значит пока сделаю точку "doNill"
карма: 0

0
Ответов: 3889
Рейтинг: 362
#10: 2011-10-07 12:40:18 ЛС | профиль | цитата
login писал(а):
сделаю точку "doNill"

Проверьте, а не начнёт ли вылетать программа при попытке обратиться к аннигилированному массиву.
------------ Дoбавленo в 12.40:
Сам проверил - начнёт. Так что либо проверки, замедляющие операции с массивом, либо очередной потенциально не "защищённый от дурака" элемент.
карма: 1

0
Ответов: 1429
Рейтинг: 50
#11: 2011-10-07 12:45:13 ЛС | профиль | цитата
Попробовал. Nill - невозможно присвоить массиву Integer.
Но когда массиву integer присваиваю 0, и пытаюсь прочитать, прога слетает.
карма: 0

0
Ответов: 3889
Рейтинг: 362
#12: 2011-10-07 17:45:28 ЛС | профиль | цитата
login писал(а):
Nill - невозможно присвоить массиву Integer

Nill может и нельзя, а nil у меня присваивается точно, массив удаляется полностью, указатель становится недействительным.
------------ Дoбавленo в 17.45:
1nd1g0 писал(а):
Finalize(массив). Проверить пока не могу

Проверил, Finalize бесполезно ибо не компилируется для массивов, то есть является пустышкой.
карма: 1

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)