Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Удаляем элемент массива! Добавлено: 20.04.06 18:32  

Автор вопроса:  DJ MATHEMATIC
Как удалить элемент из одномерного массива,причем,например если мы удалили 2 элемент,то 3 сдвигается на его место,4 на место 3 и т.д.
Удаляемый элемент выбираемя в инпутбоксе!

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 20.04.06 19:23
по поводу вопроса то вот:

Private Sub Form_Load()
    Show
    Dim a(1 To 10)
    Dim i As Long
    'fill the array with some shit
    For i = 1 To 10
        a(i) = i
        '1,2,3..10
    Next
    'print
    For i = 1 To 10
        Print a(i)
    Next
    'delete #3
    For i = 3 To 9
        a(i) = a(i + 1)
    Next
    'print
    Print "---"
    For i = 1 To 9
        Print a(i)
    Next
End Sub


а про инпутбокс, это уже капец нафиг, не интересно

Ответить

Номер ответа: 2
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #2 Добавлено: 20.04.06 23:37
Примерно так:

Sub DeleteArrayElementL(ByRef Array() As Long, ByVal ID&;)
Dim I&
For I = ID To UBound(Array) - 1
  Array(I) = Array(I + 1)
Next I
ReDim Preserve Array(UBound(Array) - 1)
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #3
Добавлено: 21.04.06 00:56
Если это массив, содержащий не-String данные (короче что-нить статическое), то ГОРАЗДО быстрее код приведённый Страшным Сном делать с помощью:
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByVal Destination As Int32, ByRef Source As Any, ByVal Length As Int32)

Ответить

Номер ответа: 4
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 21.04.06 00:57
Пардон, забыл переключить ApiViewer. Для VB6:

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Ответить

Номер ответа: 5
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #5 Добавлено: 21.04.06 05:44
Это да. С перекрывающимися участками памяти CopyMemory вроде справляется.

Ответить

Номер ответа: 6
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #6 Добавлено: 21.04.06 11:25
Я могу и ошибаться, но стринговый SAFEARRAY, насколько я знаю, содержит массив BSTR*, так что CopyMemory вполне прокатит. Только самому придется делать SysFreeString. Повторяюсь, могу ошибиться, ибо пробовать лень :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам