Private Sub Writeini()
    Dim sp As String
    Dim name As String
    sp = App.Path  &  "/ini/"  &  name & ".ini"
    WritePrivateProfileString& "Info", "HPP1", x_b1.Text, sp 
    WritePrivateProfileString& "Info", "HPP2", x_b2.Text, sp 
    WritePrivateProfileString& "Info", "MPP1", m_b.Text, sp 
End Sub本意是想通过改变 name 变量的值,在ini文件夹下生成不同名称的INI文件。
但是问题出来了,生成的文件确实是不同名称,但没有“.ini”的后缀名,郁闷至极,特来讨教!
望赐教

解决方案 »

  1.   

    类模块中定义 Declare Function WritePrivateProfileString& Lib _
    "kernel32" Alias "WritePrivateProfileStringA" _
    (ByVal AppName$, ByVal KeyName$, ByVal _
    keydefault$, ByVal FileName$)函数 Private Sub Writeini()
            Dim sp     As String
            Dim name     As String
            name = 1
            sp = App.Path & "\ini\" & name & ".ini"
            WritePrivateProfileString& "Info", "HPP1", x_b1.Text, sp
            WritePrivateProfileString& "Info", "HPP2", x_b2.Text, sp
            WritePrivateProfileString& "Info", "MPP1", m_b.Text, sp
    End Sub系统设置 要显示扩展名
      

  2.   

    API声明我在模块中添加了
     
    系统设置确实去掉了“隐藏已知文件扩展名”前面的勾(如果是这个问题我没发现,我宁愿一头撞死,绝不苟且偷生)生成的文件 只有名称没有扩展名,双击文件,系统提示选择打开方式。不知道这次我是否讲清楚了。
      

  3.   

    你编程open一下你哪个文件,分别用带ini和不带ini文件名试
      

  4.   

    sp   =   App.Path     &     "/ini/"     &     name   &   "\.ini" 
      

  5.   

    三个问题:
    1、
    WritePrivateProfileString&   "Info",   "HPP1",   x_b1.Text,   sp 
    中的WritePrivateProfileString&后面的&去掉
    2、
    VB中Name是关键字,建议更换
    3、
    文件路径"/"换为"\"
      

  6.   

    Private Sub Writeini()
        Dim sp As String
        Dim cctv As String
        cctv = Wenbenbyte
        sp = App.Path & "\ini\" & cctv & ".ini"
        WritePrivateProfileString& "Info", "HPP1", x_b1.Text, sp
        WritePrivateProfileString& "Info", "HPP2", x_b2.Text, sp
        WritePrivateProfileString& "Info", "MPP1", m_b.Text, sp
    End Sub问题1:实在抱歉,API函数就如此定义的,我想改但是,它不干!!!(出错)
    问题2:如果说name 是关键字,那么cctv应该不是了吧(如果cctv也是关键字,我只有狂晕了)
    问题3:已经全部换成“\”了。
    问题3+1:现实很残酷,所有的改完了,结果依旧!
      

  7.   

    cctv   =   Wenbenbyte 
    这句关键
    可能包含Chr(0)这种字符,VB会丢掉后续的内容
      

  8.   

    建议:
    cctv=left(Wenbenbyte,instr(Wenbenbyte,chr(0))
    并且保证cctv中无windows非法文件名字符,另外还应该不包含vbTab,vbCRLF等内容
    祝你好运
      

  9.   

    Wenbenbyte 是变量,我再试试,你说的可能就是问题的所在
      

  10.   

    cctv=left(Wenbenbyte,instr(Wenbenbyte,chr(0)) 
    应该改为:
    cctv=left(Wenbenbyte,instr(Wenbenbyte,chr(0)))
    少一个)
      

  11.   

    Private Sub Writeini()
        Dim sp As String
        Dim cctv As String * 7
        cctv = Trim$(Wenbenbyte)
        sp = App.Path & "\ini\" & cctv & ".ini"
        WritePrivateProfileString& "Info", "HPP1", x_b1.Text, sp
        WritePrivateProfileString& "Info", "HPP2", x_b2.Text, sp
        WritePrivateProfileString& "Info", "MPP1", m_b.Text, sp
    End Sub
    用以上简单的方法验证了一下,问题果然在“cctv=Wenbenbyte ”上。感谢 wolfcapita 提供思路,问题找到了,继续去完善代码去了。再次表示感谢,结贴!