Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Массивы Добавлено: 16.01.04 20:26  

Автор вопроса:  inc | ICQ: 244202544 

Граждане!!!, Помогите пожалуйста!

Как с помощью CopyMemory удалять\вставлять элементы в массив.

Заранее благодарен

Ответить

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

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 16.01.04 22:09

Вот на счет вставлять - не знаю, а вот удалять, эт пожалуйста ;)))

Private Function RemoveCtl(ByVal Index As Integer) As Integer
Dim ub As Long
ub = UBound(ctlData)

 

If Not ub = 0 And Not ub = &HFFFF Then
Call CopyMemory(ctlData(Index), ctlData(Index + 1), Len(ctlData(Index)) * (ub - Index))
Else
Erase ctlData
End If
End Function

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 17.01.04 21:51

Вставлять тоже не сложно, только нужно зарезервировать область памяти для того, чтобы не затереть байт, который будет копироваться следующим сдвигом вправо элементов таблицы (как я понимаю, CopyMemory копирует байты от меньшего адреса к большему, последовательно). Т.е. если нужно вставить элемент в позицию n (считая от нуля), где 0-й элемент находится по адресу p, а длина одного элемента в байтах b и адрес зарезервированной области c, надо скопировать память от p+n до конца массива в c длиной b*число_элементов_после_n-1, потом записать элемент n, потом скопировать память той же длины из c в n+p+b

Ответить

Страница: 1 |

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



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