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