感谢cuizm(射天狼)的帮助,解决了读写*.ini文件的问题。我的程序中有这样一句:
Data1.Databasename= "& Text1.Text & "  用来指定程序数据库的路径。
TextBox1显示的就是数据库的路径,原先是用读写注册表的方法显示的,可以正常运行。现在用读写*.ini文件的方法后,textbox1里面显示的路径和原先完全一致,可是程序报错,说是“文件名无效”,程序终止。
原先读取注册表的代码:text1.text=Getsetting("aaa","bbb","ccc")现在读取ini文件的代码如下:Private Sub Command1_Click()
    Dim strTmp As String
    
    Open "C:\aa.ini" For Input As #1
    strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
    Close #1
    
    Text1.Text = strTmp
End Sub问题的关键是:我可以确认textbox1里面的文本前后完全一样,为什么程序会认不出来?“文件名无效”说明什么?
请各位务必帮助,谢谢!!!

解决方案 »

  1.   

    完全一样?
    你先别从INI文件中读,你把路径从INI文件中直接拷贝到文本框中,再试一下,记住,先别用程序读!!
      

  2.   

    无效就是文件名错误或不存在
    小心前面或后面的空格
    你的click语句对么?
    给你个读取ini的函数:(忘了谁写的,很好用)
    Public Function GetInIKeyValue(ByVal Section As String,ByVal Key As String, ByVal File As String) As String
        Dim KeyValue As String
        
        KeyValue = String(256, " ")
        GetPrivateProfileString Section, Key, "", KeyValue, 256, File
        GetInIKeyValue = Left(Trim(KeyValue), Len(Trim(KeyValue)) - 1)
    End Function
      

  3.   

    cuizm(射天狼) :我再试一下
    Dublue(谁抢了我的名字):不好意思,funtion函数我不会具体应用,给个具体的例子好吗?
      

  4.   

    Data1.Databasename= "& Text1.Text & "
    为什么要用单引号,改成:
    Data1.Databasename= Trim(Text1.Text)
      

  5.   

    Data1.Databasename= Trim(Text1.Text)
      

  6.   

    Data1.Databasename= "& Text1.Text & "这句会在Text1.Text前后加上两个空格的。Data1.Databasename=Text1.Text就可以了为什么要用ini?搞得这么复杂,用DSN不是简单的多?
      

  7.   

    cuizm(射天狼):用粘贴ini文件中的路径文本的方法可以,直接写到文本框里也可以,就是读路径提示“文件名无效”
    data1.databasename=Trim(text1.text)和用引号是等效的。
    帮我想想是怎么回事?谢谢!
      

  8.   

    dinky(菜鸟也想飞):因为我的程序安装完后,可能还要设定不同的数据库路径。DSN怎么用说说好吗?
      

  9.   

    用OPEN来处理INI文件也是不智的做法
      

  10.   

    cuizm(射天狼):我测试了与空格无关,一旦路径名前面有空格,提示的是数据库路径找不到错误,文件名无效不是这个原因。
      

  11.   

    text1.text=strTmp  这句有没有问题?
      

  12.   

    Dim strTmp As String
        
        Open "C:\time.txt" For Input As #1
        strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
        Close #1
        
        Text2.Text = strTmp
        Data1.DatabaseName = Text2.Text
        Data1.RecordSource = "stk_CONTROLMAIN"
        Data1.Refresh
    我的time.txt文件里写的数据文件路径,这试过了,没问题啊,是不是你哪块写错了!!
      

  13.   

    我知道什么问题了,是你的INI文件里有回车,你把回车删除掉,只保留路径那一行~~
      

  14.   

    strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
    这句是把文件中的所有内容都读到strTmp变量中去,包括回车,如果你只想读一行可以用:
    input #1, strTmp
      

  15.   

    cuizm(射天狼):可以把读取ini文件的代码修改一下吗?问题基本可以确定在这里。
      

  16.   

    如果你INI文件里只在路径这一行,就用
    Input #1, strTmp肯定可以解决的~~
      

  17.   

    是不是用input #1 ,strTmp 代替strTmp=StrConv()........这一句?
      

  18.   

    我还有个问题,为什么建立ini文件的时候只能写“open "c:\xxx.ini"......”而不能多加几级目录,比如:“open "c:\abc\xyz\xxx.ini"”?
      

  19.   

    open语句只能建文件,如果目录不存在,则会有问题,创建目录用:
    MkDir
    用Dir检查目录是否存在!!