![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Подскажите пожалуйста, как мне изменять размер динамического массива, при это не теряя данных, которые в нем находятся.
Предположим:
Результатом этой программы будет: x[1]=0, x[2]=0, ... ,x[10]=10 А нужно, чтобы по-человечески получалось. Это сообщение отредактировал(а) Unforgiven - 25.4.2007, 16:24 |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
А если, к примеру, я не знаю сколько элементов массива у меня будет? Тогда как же?
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| artemiy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 22.2.2007 Репутация: нет Всего: нет |
Вот добавление одного элемента
Таким образом ты можешь добавить сколько угодно элементов. |
|||
|
||||
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Ничего подобного. Так получается прежний результат!
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Меня терзают смутные сомнения. Добавлено через 3 минуты и 40 секунд Unforgiven, Приводи больше кода который не работает. А так гадать в чем у тебя проблемма нехочется. Добавлено через 4 минуты и 48 секунд -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
А если теперь попробовать сделать таким же способом динамически изменяемый буфер в памяти. Получится ли и если да, то как?
Добавлено через 1 минуту и 35 секунд Кстати, твой пример коряво работать будет, т.к. первый элемент = -1 |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Что ты подразумеваешь под этим? Добавлено через 1 минуту и 29 секунд
Ну а не фига индекс делать byte. Меняй смело на Integer. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Все это весьма кривой способ. Изменение длинны массива таким образом очень нежелательно, так как при этом каждый раз выделяется новый буфер, в него копируются все элементы, а старый удаляется. Выделять так уже сразу на 5 элементов, а в дальнейшем изменять его длину не на 1 элемент, а на 50% его прежней длины, тогда операции выделения, освобождения памяти станут весьма редкими. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Ну то есть, грубо говоря, создать подобие структуры С++ "unsigned char* pBuffer "
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Зачем? В Делфях это как я понимаю PChar. Только зачем он тебе? Объясни конкретнее что ты хочешь реализовать. Это сообщение отредактировал(а) Rennigth - 25.4.2007, 17:10 -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Перевожу дурацкий сишный код. А там таких структур очень много. Кроме того есть unsigned float* pBuf, short int* pBuf и т.д. Как все это нормаль перевести?
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
В C++ особо не силен но похоже что: unsigned float* pBuf - array of Extended; short int* pBuf - arrray of Byte; unsigned char* pBuf - PChar; (А лутше string используй чтобы не дай бог указатель не посеять) Если что поправьте. В приципе с ними со всеми типами работай как с обычными динамическими массивами. Если есть все-таки траблы, выкладывай куски кода которые не можешь перевести, кто-нить поможет. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Unforgiven |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 27.1.2005 Репутация: нет Всего: нет |
Насколько я помню, в С++ нет такого понятия, как char. Их Char аналог нашего Byte
Добавлено через 3 минуты и 5 секунд А если будут встречаться многомерные динамические массивы. Как быть? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |