![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: нет Всего: 3 |
делаю массив так:
А как добавить ещё одни элемент, чтобы размер массива стал на одни элемент больше? Пока придумал только делать через функцию со вторым вспомогательным массивом, но наверняка есть какой-то способ проще. Пишу на borland tp7.0. Это сообщение отредактировал(а) Proxin - 2.3.2010, 15:41 |
|||
|
||||
| ФедосеевПавел |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 2 Всего: 10 |
Нет. Проще никак. Можно только выделять вспомогательный массив не на один элемент больше, а с небольшим запасом (на 5, на 10, на 100).
|
|||
|
||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: нет Всего: 3 |
это печально. получается, в турбе нет нормальных динамических массивов.
спасибо. и ещё вопрос - как узнать индекс последнего элемента в массиве? high не подходит. Это сообщение отредактировал(а) Proxin - 2.3.2010, 16:43 |
|||
|
||||
| ФедосеевПавел |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 2 Всего: 10 |
Но ты же сам его определяешь. Храни в отдельной переменной.
|
|||
|
||||
| volvo877 |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Proxin, больше НИКОГДА так не делай. Ты потерял возможность обращаться к какому-либо элементу дин.массива, отличному от 0, при включенном режиме {$R+} (а этот режим при отладке вообще не вздумай выключать, если хочешь, чтобы программа работала, и выдавала правильные, а не какие-попало результаты). Смотри:
Я делаю так:
Добавлено через 10 минут и 18 секунд
1) напиши свою реализацию через связный список, тогда будешь добавлять/удалять элементы легко 2) воспользуйся TCollection для хранения данных вместо дин. массива. Третий вариант (перейти на FPC, где динамические массивы, и не только, есть) не озвучиваю, хотя очень хочется |
||||||||
|
|||||||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: нет Всего: 3 |
Можно пример реализации через связанные списки, или где почитать?
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: нет Всего: 54 |
ma = array of integer;
и SetLength() или так только в делфи? Это сообщение отредактировал(а) Frees - 5.3.2010, 23:29 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Так - в любом 32 битном компиляторе. В Turbo Pascal-е вот так:
(писано на коленке, прямо в Блокноте, так что могут быть огрехи в синтаксисе, хотя я старался не допустить. Это если не перераспределять память при каждом увеличении массива. С Integer-ами, разумеется, будет работать неэффективно, но если тип элементов - бОльшего размера, то...). Proxin, почему не рассматриваешь второй и третий предложенный варианты? |
|||
|
||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: нет Всего: 3 |
спасибо большое.
почему не рассматриваю другие варианты? потому что посмотреть охота как это делается на ранних компиляторах. а с tcollection - не знаю, как реализовать. почитать где про них можно? |
|||
|
||||
![]()
|
| Правила форума "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. |