![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| iff |
|
||||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
Пишу на Turbo Pascal.
Есть динамический одномерный массив. нужно добавить в его конец ещё один элемент. если это делать так:
то все ранее введненные элементы стираются. нужно что-то типа:
но только, понятное дела, getmem(myarr + counter * sizeof(integer), sizeof(integer)); не работает. Если использовать getmem(myarr[counter], sizeof(integer));, то тоже не работает. Т.е. получается здесь нужно сложить адреса... Добавлено через 32 секунды Пока что только один вариант - не использовать getmem вообще. -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
При увеличении массива, выделяется новая память под новый размер.
Данные же остаются в памяти, которая была выделена в предыдущий раз. Нужно оттуда их перенести в новую и старую освободить. Пример:
|
|||
|
||||
| cemick |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 6 |
Зачем велосипеды придумывать??
Во первых у вас не динамический массив, динамический же будет arrtype = array of integer; Затем есть процедура перераспределения памяти существующего блока ReallocMem. И вообще вся эта работа уже делается в динамическом массиве, когда вызывается метод из System:
Проверка:
А-а-а, TURBO PASCAL Это сообщение отредактировал(а) cemick - 25.5.2011, 17:45 |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
В турбопаскале нет динамических массивов.
Вот поэтому и использовались такие костыли с отключенной проверкой границ. И, поскольку велосипед придумали позже, то приходилось изворачиваться вот так. |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: нет Всего: 16 |
Snowy, спасибо.
-------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |