Страница: 1 |
Граждане!!!, Помогите пожалуйста! Как с помощью CopyMemory удалять\вставлять элементы в массив. Заранее благодарен
Вот на счет вставлять - не знаю, а вот удалять, эт пожалуйста )) Вставлять тоже не сложно, только нужно зарезервировать область памяти для того, чтобы не затереть байт, который будет копироваться следующим сдвигом вправо элементов таблицы (как я понимаю, CopyMemory копирует байты от меньшего адреса к большему, последовательно). Т.е. если нужно вставить элемент в позицию n (считая от нуля), где 0-й элемент находится по адресу p, а длина одного элемента в байтах b и адрес зарезервированной области c, надо скопировать память от p+n до конца массива в c длиной b*число_элементов_после_n-1, потом записать элемент n, потом скопировать память той же длины из c в n+p+b Страница: 1 |
Вопрос: Массивы
Добавлено: 16.01.04 20:26
Автор вопроса: inc | ICQ: 244202544
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 16.01.04 22:09
Private Function RemoveCtl(ByVal Index As Integer) As Integer
Dim ub As Long
ub = UBound(ctlData)
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-сайт:
Профиль | | #2
Добавлено: 17.01.04 21:51