Вопрос: Удаление из массива | Добавлено: 24.11.02 22:20 |
Автор вопроса: ![]() ![]() |
Есть массив строчных переменных. Как удалить элемент в середине массива ? |
Ответы | Всего ответов: 16 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 68 |
Профиль | Цитата | #1 | Добавлено: 25.11.02 03:02 |
Если он не большой, его видимо нужно переписать используя Redim... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 25.11.02 03:57 |
Redim обнуляет масив |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 68 |
Профиль | Цитата | #3 | Добавлено: 25.11.02 04:19 |
нет басика попробовать, но ваще должно быть так: Dim a() ' Объявление динамического массива ReDim a(10,10) ' Выделение памяти для массива 10х10 ReDim Preserve a(10,15) ' Делает массив больше, но сохраняет содержимое. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 85 |
Профиль | Цитата | #4 | Добавлено: 25.11.02 08:46 |
Может я ошибаюсь, но вопрос был об удалении произвольного элемента из массива, а не переопределении его размера. На этот случай существует большое кол-во алгоритмов попробуй посмотреть в спец литературе, в FAQ. Но смысл примерно такой: Dim A(100,100) As String ' DelElement - номер удаляемого элемента в массиве For i=DelElement To Ubound A(i)=A(i+1) Next i т.е. перезаписываем удаляемый элемент массива, следующим значением и сдвигаем все последующие элементы массива к началу.
Удачи. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 27.11.02 20:09 |
Спасибо уже нашёл. Sergey M прав. Нужно добавить Preserve |
Номер ответа: 6 Автор ответа: ![]() ![]() Вопросов: 2 Ответов: 117 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 28.11.02 11:32 |
И как, это интересно Redim удаляет элемент из середины массива? |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 68 |
Профиль | Цитата | #7 | Добавлено: 28.11.02 12:00 |
А кто сказал, что он удаляет? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 85 |
Профиль | Цитата | #8 | Добавлено: 28.11.02 13:07 |
Автор вопроса CyRax Есть массив строчных переменных Как УДАЛИТЬ элемент в середине массива ? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 28.11.02 22:51 |
Да то про Redim было. А так... Я переписывал в цикле. Например A(x)=A(x+1). А потом A(xMax) удаляешь. Нужно было переопределить массив. А насчёт вопроса. Я тогда ещё Preserve не нашёл. Вот такая блин хронология. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 68 |
Профиль | Цитата | #10 | Добавлено: 29.11.02 04:36 |
Я рад, что у тебя всё получилось! |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 147688925 Вопросов: 24 Ответов: 708 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 30.11.02 18:52 |
Господа! А не легче ли использовать вместо массива в этом случае коллекцию? Это, конечно, тормознее, но удобнее! |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 30.11.02 22:34 |
Спасибо господин администратор. Прикольная идея. P.S. Я там послал Павлу вторую версию Хелпмейкера. |
Номер ответа: 13 Автор ответа: ![]() ![]() Вопросов: 2 Ответов: 117 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 02.12.02 07:11 |
Насколько я понимаю массив имеет сквозную нумерацию и в нем не может быть так, что после элемента 9 идет сразу 11, а в коллекции запросто. А проверять на существование элемента с данным индексом, вот это действительно тормоз. А потом, коллекция эффективна когда работаешь с массивом обектов по их именам. А в случае индексов лучше использовать классический массив. Особенно, если он многомерный. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 204447456 Вопросов: 180 Ответов: 4229 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 03.12.02 19:54 |
Вот гляди что я состряпал. 'Модуль класса (Class1) 'Модуль формы |
Номер ответа: 15 Автор ответа: ![]() ![]() Вопросов: 2 Ответов: 117 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 05.12.02 15:38 |
Я был более, чем уверен, что удаление элемента из коллекции, удалает элемент, но не меняет индекс остальных элементов. Но теперь получается, что я нес полный бред. Прошу прощения, я был не прав. |
|