Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Подскажите... Добавлено: 15.03.07 21:18  

Автор вопроса:  ANDREY Z5Z | Web-сайт: save-games.info
Из 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-сайт: save-games.info
 Профиль | | #2
Добавлено: 16.03.07 01:23
Да ну, я знаю конечно что такое указатель :) но вот навыков работы с ним ноль :) По сему даже не представляю чем его заменить... А понадобилось - просто из другой проги этот надо код взять :)

Ответить

Номер ответа: 3
Автор ответа:
 ANDREY Z5Z



Вопросов: 38
Ответов: 125
 Web-сайт: save-games.info
 Профиль | | #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, за статью респект.. понравилась..

Ответить

Страница: 1 |

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



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