過去ログ

                                Page     877
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼Long型値の上位ワード、下位ワードの切り...  エトランゼ 03/3/6(木) 22:04
   ┣Re:Long型値の上位ワード、下位ワードの切り...  よろずや 03/3/6(木) 22:30
   ┗Re:Long型値の上位ワード、下位ワードの切...  hira 03/3/16(日) 4:39

 ───────────────────────────────────────
 ■題名 : Long型値の上位ワード、下位ワードの切り...
 ■名前 : エトランゼ
 ■日付 : 03/3/6(木) 22:04
 -------------------------------------------------------------------------
   500000というlong型の値をinteger型の変数2つに入れたいのですが

dim lng as Long
dim iH as Integer,iL as Integer
iL = CInt(lng And &HFFFF&)
iH = CInt((lng \ (2^16)) And &HFFFF&)

とするとオーバーフローします。なにかいい手は無いでしょうか?
 ───────────────────────────────────────  ■題名 : Re:Long型値の上位ワード、下位ワードの切り...  ■名前 : よろずや  ■日付 : 03/3/6(木) 22:30  -------------------------------------------------------------------------
   ▼エトランゼ さん:
>500000というlong型の値をinteger型の変数2つに入れたいのですが
>
>dim lng as Long
>dim iH as Integer,iL as Integer
>iL = CInt(lng And &HFFFF&)
>iH = CInt((lng \ (2^16)) And &HFFFF&)
>
>とするとオーバーフローします。なにかいい手は無いでしょうか?

  If lng And &H8000& Then
    iL = &HFFFF8000 Or lng And &H7FFF&
  Else
    iL = lng And &H7FFF&
  End If
  iH = lng \ &H10000
 ───────────────────────────────────────  ■題名 : Re:Long型値の上位ワード、下位ワードの切...  ■名前 : hira  ■日付 : 03/3/16(日) 4:39  -------------------------------------------------------------------------
   ▼エトランゼ さん:
>500000というlong型の値をinteger型の変数2つに入れたいのですが
>
>dim lng as Long
>dim iH as Integer,iL as Integer
>iL = CInt(lng And &HFFFF&)
>iH = CInt((lng \ (2^16)) And &HFFFF&)
>
>とするとオーバーフローします。なにかいい手は無いでしょうか?

準備が面倒な上、推奨されてはいませんが、こんな手もあります。
Type DWord
  d As Long
End Type

Type Word2
  l As Integer
  h As Integer
End Type

Sub test()
  Dim lng As Long
  Dim iH As Integer, iL As Integer
  
  Dim stL As DWord
  Dim stI As Word2
  
  lng = 500000
  stL.d = lng
  LSet stI = stL
  iH = stI.h
  iL = stI.l
  Debug.Print iH, iL
End Sub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 877