Аналог StrPtr. Как использовать?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

FLame'n'ASHES
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 08.09.2007 (Сб) 14:41

Аналог StrPtr. Как использовать?

Сообщение FLame'n'ASHES » 08.09.2007 (Сб) 14:46

Решил перейти на .Net. И возникает проблема, следующего характера…
Необходимо получить указатель на строку (StrPtr).
1. В Reference добавляю «mscorlib»
2. В Assemble пишу «Imports System.Runtime.InteropServices»
3. В объекте:
Dim strString As String
Dim intAddress As IntPtr
Dim objGCHandle As New System.Runtime.InteropServices.GCHandle

objGCHandle.Alloc(ssd)
intAddress = gch.AddrOfPinnedObject()

Вдруг откуда не возьмись - «An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll
Additional information: Handle is not initialized.»

Причем тут «'System.InvalidOperationException»?

В чем подвох, собратья-кодеры?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.09.2007 (Сб) 14:49

Не иначе, строка у тебя Is Nothing на момент взятия указателя.
Но в любом случае, GCHandle -- указатель на объект строки, а не на её данные.
Изображение

FLame'n'ASHES
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 08.09.2007 (Сб) 14:41

Сообщение FLame'n'ASHES » 08.09.2007 (Сб) 14:51

tyomitch писал(а):Но в любом случае, GCHandle -- указатель на объект строки, а не на её данные
Да, опечатка. :)
Is Nothing проверим. Сенкс.

FLame'n'ASHES
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 08.09.2007 (Сб) 14:41

Сообщение FLame'n'ASHES » 08.09.2007 (Сб) 15:19

Будет точнее.
strString = Space(2)
objGCHandle.Alloc(ssd)
intAddress = gch.AddrOfPinnedObject()
---
Всё равно не работает.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.09.2007 (Сб) 15:31

Что такое ssd?
Изображение

FLame'n'ASHES
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 08.09.2007 (Сб) 14:41

Сообщение FLame'n'ASHES » 08.09.2007 (Сб) 16:54

tyomitch писал(а):Что такое ssd?

Торопился, и вставил кусок кода и программы. ssd -- strString.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.09.2007 (Сб) 17:03

Если в программе на .net возникла необходимость иметь StrPtr, значит присутствует непонимание того, что StrPtr в программе на .net никогда не бывает нужна.

Автору предлагается описать первоначальную задачу.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

NET Coder
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 06.02.2008 (Ср) 0:18

Сообщение NET Coder » 11.02.2008 (Пн) 10:55

Может это поможет.

Буду только рад!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList