Да, я бы с удовольствием посмотрел на такой шаманский ритуал, когда по указателю на объект в VB мы сможем обращаться к его методам и свойствам... У меня есть кой-какие мысли на этот счет, но хотелось бы сначала услышать твоего, tyomitch, мнения и совета. А тема действительно интересная.GB826 писал(а):Скажите хоть куда искать? Буду очень благодарен!
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Private Function ObjectFromPtr(ByVal lPtr As Long) As Object
Dim objT As Object
' Bruce McKinney's code for getting an Object from the
' object pointer:
CopyMemory objT, lPtr, 4
Set ObjectFromPtr = objT
CopyMemory objT, 0&, 4
End Function
Private Sub Form_Load()
Dim objT As Object
Set objT = ObjectFromPtr(ObjPtr(Command1))
objT.Enabled = False
End Sub
Dim MyClass1 As New CMyClass
Dim MyClass2 As New CMyClass
CopyMemory ObjPtr(MyClass2), ObjPtr(MyClass1),4
GSerg писал(а):Да собственно, искать в сторону единственного вызова GetMem4.
!Viper! писал(а):Ибо самостоятельно он не удалится поскольку не является ссылкой, и, соответственно, механизм подсчета ссылок в данном случае не сработает.
GSerg писал(а):Он очень даже является ссылкой, и прекрасно удалится, если его оставить. Просто тогда количество удалений объекта будет больше на 1, чем надо.
А если ты про переменную типа long, то её тем более не надо обнулять.
GSerg писал(а):Просто тогда количество удалений объекта будет больше на 1, чем надо.
Private Declare Sub CopyObject Lib "MSVBVM60.DLL" Alias "GetMemObj" _
(ByVal Source As Long, Dest As Object)
Private Sub Form_Load()
Dim objT As Object
CopyObject ObjPtr(Command1), objT
objT.Move 0, 0
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86