投稿日 | : 2004/08/28(Sat) 17:19 |
投稿者 | : Say |
Eメール | : |
URL | : |
タイトル | : Re^3: 変数の内容のメモリ上の扱いについて |
>> 変数の内容が、メモリ上でどのように扱われているかを調べられる、
>> 関数とかありませんか?
> 私も以前それで苦労しました。
> あったら本当に教えてほしいです。
なんでも関数で揃ってたら、プログラマは不要になってしまいます。
ないものは作ってください。
たとえばこう。(良い子はまねしないでね。)
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(ByVal Destination As Long, _
ByVal Source As Long, _
ByVal Length As Long)
Private Sub Command1_Click()
Dim Suu As Integer
Dim LSuu As Long
Dim Str1 As String * 1
Dim Str2 As String
Dim bBuf(10) As Byte
Suu = 40
LSuu = 50000
Str1 = "a"
Str2 = "b"
CopyMemory VarPtr(bBuf(0)), VarPtr(Suu), Len(Suu)
MsgBox dispVar(bBuf(), Len(Suu))
CopyMemory VarPtr(bBuf(0)), VarPtr(LSuu), Len(LSuu)
MsgBox dispVar(bBuf(), Len(LSuu))
CopyMemory VarPtr(bBuf(0)), StrPtr(Str1), LenB(Str1)
MsgBox dispVar(bBuf(), LenB(Str1))
CopyMemory VarPtr(bBuf(0)), StrPtr(Str2), LenB(Str2)
MsgBox dispVar(bBuf(), LenB(Str2))
End Sub
Function dispVar(param1() As Byte, param2 As Long)
Dim i As Long
Dim ret As String
ret = toBin(param1(0))
For i = 1 To param2 - 1
ret = ret & "," & toBin(param1(i))
Next
dispVar = ret
End Function
Function toBin(ByVal param As Byte) As String
Dim i As Long
Dim ret As String
ret = ""
For i = 0 To 7
ret = CStr(param Mod 2) & ret
param = param \ 2
Next
toBin = ret
End Function