Страница: 1 | 2 |
Вопрос: Копирование из массива
Добавлено: 18.09.05 14:59
Автор вопроса: BUG(O)R | Web-сайт:
Здраствуйте, прошу у вас помощт по следующему вопросу:
Существует массив(as byte), некая последовательность байт, проще говоря, дамп файла, по известному мне индексу в этом массиве лежит слово(в asc) ДИНАМИЧЕСКОЙ длины, оканчивающееся на dll, мне надо прочитать это слово в отдельную переменную.
Так вот сам вопрос: Как осуществить поиск в массиве не в цикле а одной како-нибудь функцией(instr например) и как выделить оттуда это слово НЕ ИСПОЛЬУЯ ЦИКЛОВ и ОПЕРАТОРОВ!!!
Это вообще возможно?
Ответы
Всего ответов: 18
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 18.09.05 21:32
Это ж тебе не Си, хотя даже в PHP такое было... В Вб точно нет.
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 19.09.05 04:20
InStrB пробовал?
Номер ответа: 3
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #3
Добавлено: 19.09.05 08:54
[OFFTOP]
BUG(O)R
А ты не случайно не с дамаджлаба?
[/OFFTOP]
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 19.09.05 09:56
Попробуй конвертить все это в строку через StrConv, а далее - InStr.
Номер ответа: 5
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #5
Добавлено: 19.09.05 15:20
Да я тут подумал сам, посоветовался с людьми и оказалось проще/быстрее/оптимизированнее сделать через цикл
gvozd
Бываю там, бываю
Номер ответа: 6
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #6
Добавлено: 19.09.05 15:37
BUG(O)R
Не ожидал тебя встретить тут.
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 19.09.05 18:47
мож я что-то не так делаю, но StrConv на первый параметр хочет строку, а не массив.
Номер ответа: 8
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #8
Добавлено: 19.09.05 18:59
[CODE}
Option Explicit
Option Base 1
Private Sub Form_Load()
Dim buffer(5) As Byte
buffer(1) = 72
buffer(2) = 101
buffer(3) = 108
buffer(4) = 108
buffer(5) = 111
MsgBox StrConv(buffer, vbUnicode)
End Sub
[/CODE]
Номер ответа: 9
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #9
Добавлено: 19.09.05 19:02
тогда
string = Join(array, vbNullString)
Номер ответа: 10
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #10
Добавлено: 19.09.05 21:53
Ну, сделай на бумажке
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 20.09.05 00:13
2 Sur
пасиб! круто, я и не знал что так можно...
Номер ответа: 12
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #12
Добавлено: 20.09.05 05:46
Наверное ты знаешь как им пользоваться. Вот накропал примерчик.
Dim ArrSrc() As Byte, ArrSrch() As Byte
ReDim ArrSrc(30), ArrSrch(2)
ArrSrc(10) = 9: ArrSrc(11) = 1: ArrSrc(12) = 5
ArrSrch(0) = 9: ArrSrch(1) = 1: ArrSrch(2) = 5
MsgBox InStrB(ArrSrc(), ArrSrch())
End Sub
Номер ответа: 13
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #13
Добавлено: 20.09.05 05:49
Только результат он возвращает как для строк (нижняя граница 1), т.е. для него задавать размерность лучше так:
Номер ответа: 14
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #14
Добавлено: 20.09.05 05:58
А копировать наверное только API.
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long)
Например так:
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 20.09.05 06:00
Т.е. наоборот,
CopyMemory NewArr(0), ArrSrc(X), 3