Как разделить две переменных, запакованные в одну?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Как разделить две переменных, запакованные в одну?

Сообщение SBJocker » 20.01.2004 (Вт) 23:28

Как разделить две переменных типа Integer, запакованные в одну типа Long?

Как вытащить первое число (младшие 16 бит) я разобрался:
integerVar = (Clng(LongResult%) and &hØffff&)
А вот как с остальными 16 старшими?

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

Сообщение GSerg » 21.01.2004 (Ср) 10:41

function hiword(byval v as long) as integer
if v and &h80000000 then hiword=(v and &h7fffffff)\&h10000 or &h8000 else hiword=v\&h10000
end function

function loword(byval v as long) as integer
loword=v and &hffff
end function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Сообщение SBJocker » 21.01.2004 (Ср) 12:09

Спасибо, а я нашел другое решение, в объявлении функции возвращающей подобное запакованное число нужно поставить тип возвращаемых данных POINTS , всё будет распаковываться автоматически!

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

LSet тоже решает проблему

Сообщение Vi » 21.01.2004 (Ср) 15:34

На будущее - LSet может быть использован при преобразовании
Код: Выделить всё
Private Type x1
  x As Integer
  y As Integer
End Type

Private Type x2
  x As Long
End Type

Private Sub Form_Load()
  Dim x As x1, y As x2
  y.x = &H11112222
  LSet x = y
  Debug.Print hex(x.x), hex(x.y)
End Sub
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.01.2004 (Ср) 15:54

"Беня говорит мало, но он говорит смачно. Он говорит мало, но хочется,
чтобы он сказал еще что-нибудь."
© Исаак Бабель. Одесские рассказы


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 1

    TopList