代码之家  ›  专栏  ›  技术社区  ›  Baiyan Huang

如何从VB中long指定的地址获取字符串

  •  0
  • Baiyan Huang  · 技术社区  · 14 年前

    在vba中,有一个长类型持有的地址指向以空结尾的字符串,但我找不到从该地址获取字符串的方法:

    long str_address = ...
    string str = ?
    

    2 回复  |  直到 14 年前
        1
  •  3
  •   wqw    14 年前

    CopyMemory 这种方式:

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Private Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As Long
    
    Private Function pvToString(ByVal lPtr As Long) As String
        If lPtr <> 0 Then
            pvToString = String(lstrlenA(lPtr), 0)
            Call CopyMemory(ByVal pvToString, ByVal lPtr, Len(pvToString))
        End If
    End Function
    
        2
  •  3
  •   GSerg    14 年前

    Private Declare Function SysAllocStringByteLen Lib "oleaut32.dll" (ByVal m_pBase As Long, ByVal l As Long) As String
    Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Long) As Long
    
    ...
    dim s as string    
    s = SysAllocStringByteLen(str_address, lstrlen(str_address))