yhm第一次得到时最后一位是chr(0)

解决方案 »

  1.   

    问题在yhm的长度,
    字符串的长度.
    Public Function getini() As String
       Dim myini As String
      myini = String(255, 0)
       Call GetPrivateProfileString("启动", "用户名", "", myini, 255, App.Path & "\my.ini")
       getini =trim( myini)
    End Function
      

  2.   

    vabug(vabug) :
      这样不行,我试过。
    当运行至rc1.Filter = "用户名='" & yhm & " '"时,比如yhm为cao,点住yhm,显示"cao,正常情况下是"cao",好像少了半个引号。
      

  3.   

    你的GetIni()有问题
    返回字符的长度仍旧是255,因为你用字符chr(0)填充了myini
    给你一个读取INI的例子
    Public sIniFile As String 'INI文件名称Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
                             "WritePrivateProfileStringA" (ByVal lpApplicationname As String, _
                              ByVal lpKeyName As Any, ByVal lsString As Any, ByVal lplFileName As String) As Long
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
                             "GetPrivateProfileStringA" (ByVal lpApplicationname As String, _
                             ByVal lpKeyName As String, ByVal lpDefault As String, _
                             ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Private Declare Function GetLastError Lib "kernel32" () As Long
    '窗体总在最前
    Declare Function SetWindowPos& Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cX As Long, ByVal cY As Long, ByVal wFlags As Long)Public Function WriteToINI(ByVal lpSection As String, ByVal lpKey As String, ByVal lpValue As String, ByVal lplFileName As String) As Long
    '本函数用于向初始化文件中写入设置
      Dim Result1 As Long
      Result1 = WritePrivateProfileString(lpSection, lpKey, lpValue, ByVal lplFileName)
      If Result1 = 0 Then
        WriteToINI = GetLastError()
      Else
        WriteToINI = Result1
      End If
    End FunctionPublic Function ReadFromINI(ByVal lpSection As String, _
      ByVal lpKey As String, ByVal lpDefault As String, _
      ByVal lpFileName As String) As String
      '本函数用于从初始化文件中读取设置字符串
      Dim ReturnedString As String * 1000
      'Dim ReturnedString1 As String
      Dim Result2 As Long
      Result2 = GetPrivateProfileString(lpSection, lpKey, lpDefault, _
      ReturnedString, Len(ReturnedString), lpFileName)
      If Result2 = 0 Then
        ReadFromINI = "" 'GetLastError()
      Else
        ReadFromINI = Trim$(Replace(Trim$(ReturnedString), Chr(0), "", 1, -1, vbBinaryCompare))
      End If
    End Function
      

  4.   

    解决了,加了这么一句:yhm = Left(yhm, InStr(yhm, Chr(0)) - 1)
    多谢诸位!