VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -