m_Tns = Space(50)
    m_TMP = Space(50)
    m_USR = Space(50)
    On Error GoTo ErrHandle
    
    GetPrivateProfileString "STS", "TNS", "", m_Tns, Len(m_Tns), App.Path & "\STS.INI"
    GetPrivateProfileString "USER", "QPSS", "", m_TMP, Len(m_TMP), App.Path & "\STS.INI"
    GetPrivateProfileString "USER", "CONNECT", "", m_USR, Len(m_USR), App.Path & "\STS.INI"    'MsgBox m_Tns
    
    m_Tns = Left(Trim(m_Tns), Len(Trim(m_Tns)) - 1)   ①
    m_TMP = Left(Trim(m_TMP), Len(Trim(m_TMP)) - 1)   ②
    m_USR = Left(Trim(m_USR), Len(Trim(m_USR)) - 1)   ③    'MsgBox m_Tns
以上程序段中为什么要有最后那三句(标有序号)呢,为什么要对m_Tns、m_TMP、m_USR 这三个变量做这样的处理呢,我使用MsgBox输出m_Tns,两次都一样啊。

解决方案 »

  1.   

    预先分配的都是50个字符的空间长度,当处理完之后,需要得到实际的字符串长度。MSGBOX是看不出来的,但是可以通过Len来测试长度进行比较
      

  2.   

    m_Tns = Left(Trim(m_Tns), Len(Trim(m_Tns)) - 1) 返回的m_Tns 比原来的m_Tns相比除去了空格后再去掉最后一个字符,估计'MsgBox Len(m_Tns)返回的长度就会不一样
      

  3.   

    m_Tns = Space(50) 
        m_TMP = Space(50) 
        m_USR = Space(50) 
        On Error GoTo ErrHandle 
        
        GetPrivateProfileString "STS", "TNS", "", m_Tns, Len(m_Tns), App.Path & "\STS.INI" 
        GetPrivateProfileString "USER", "QPSS", "", m_TMP, Len(m_TMP), App.Path & "\STS.INI" 
        GetPrivateProfileString "USER", "CONNECT", "", m_USR, Len(m_USR), App.Path & "\STS.INI"     'MsgBox m_Tns 
    '在这里加一句话
        msgbox len(m_tns)
        
        m_Tns = Left(Trim(m_Tns), Len(Trim(m_Tns)) - 1)  ① 
    '在这里加一句话,这时候你可以看到,其实2个m_Tns 是完全不通的字符串
        msgbox len(m_tns)    m_TMP = Left(Trim(m_TMP), Len(Trim(m_TMP)) - 1)  ② 
        m_USR = Left(Trim(m_USR), Len(Trim(m_USR)) - 1)  ③     'MsgBox m_Tns