Страница: 1 |
Страница: 1 |
Вопрос: Подскажите...
Добавлено: 15.03.07 21:18
Автор вопроса: ANDREY Z5Z | Web-сайт:
Из VB.NET функции VarPtr нету... и чем заменить в msdn не говорят. VarPtr - это получение указателя на переменную, но проблема в что я не совсем представляю что делают с указателями... Чем же ее таки заменить хотябы в этом примере?
CopyMem(XData, VarPtr(byteArray(0)), XByte)
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 15.03.07 23:15
Ну раз ты даже понятия не имеешь что такое указатель и что с ним делают, то зачем тебе это вообще понадобилось?
Номер ответа: 2
Автор ответа:
ANDREY Z5Z
Вопросов: 38
Ответов: 125
Web-сайт:
Профиль | | #2
Добавлено: 16.03.07 01:23
Да ну, я знаю конечно что такое указатель но вот навыков работы с ним ноль По сему даже не представляю чем его заменить... А понадобилось - просто из другой проги этот надо код взять
Номер ответа: 3
Автор ответа:
ANDREY Z5Z
Вопросов: 38
Ответов: 125
Web-сайт:
Профиль | | #3
Добавлено: 16.03.07 01:38
Насколько я представляю в данном случае - массив начиная с нулевого индекса побайтно копируется в XData. VarPtr - прямая ссылка на область в памяти и указывает на выбранную ячейку массива. Наверное использовать VarPtr надо чтобы в CopyMem информация поступала именно побайтно... Ну в общем не знаю, так ли все это. Ну а нельзя тогда написать что-то типа ByRef byteArray(0)? Первый раз столкнулся с этим - подскажите Я же биолог а не программист
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 16.03.07 08:01
Начнем с того, что в НЕТ вызов API довольно часто бывает нетривиальной задачей и зачастую уступает по скорости вызову аналогичных ф-ий НЕТ. В 99% случаях можно обойтись без API, а посему тебе следует понять то, что не надо стремиться переносить код из старых версий VB в НЕТ а лучше приложить немного усилий и адаптировать его под "родные" ф-ии НЕТ.
Например в твоем случае происходит копирование массива байт.. Вопрос только в том, куда??? Если в другой массив то можешь воспользоваться Array.Copy или ArrayCopyTo (там масса разных конструкторов). В других случая надо уже смотреть конкретно по коду..
Номер ответа: 5
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #5
Добавлено: 16.03.07 11:11
Если уж очень хочется воспользоваться CopyMemory, то стоит ее объявить с аргументами нужного тебе типа.
З.Ы. прорекламлю свою статью на VBStreets о работе с памятью на VB.NET:
http://www.vbstreets.ru/VBdotNET/Articles/66311.aspx
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 16.03.07 12:20
Viper, за статью респект.. понравилась..