请问如何读取配置文件,文件格式为csv
谢谢,如果有源程序请大侠一并给出
万分感谢

解决方案 »

  1.   

    用ts.readline读取得时候是把一个逗号当做一行吗
      

  2.   

    '请问如何读取配置文件,文件格式为csv
    '谢谢,如果有源程序请大侠一并给出
    '万分感谢
    '我不是大侠,只是碰巧知道问题的答案,互相帮助吧!
    '*灵感(1):关于问题的识别。
    解决问题并不困难,困难的是不能够认识到真正的问题。
    要学会从纷繁的现象当中,找到问题的主要矛盾。然后洞析问题的本质。当你找到牵一发而动全身的问题并且解决了它,整个问题就留刃而解。第一步,要搞清楚你要什么?
    第二步,你才能写出它。
    你说请问如何读取配置文件,文件格式为csv.
    如果你想读配置文件,最好用INI,如果你觉得INI有限制(64K,每一行长度有限制等等)可以自已搞一个解决方案
    如果你想读csv,这又是另一个问题。
    csv文件的本质,实际上一个表,一个二组数组。
    问题的抽象应该是这样的:
    怎样保存一个二组数组到一个串。
    怎样读取一个二组数组从一个串。
    '********************************************
    Public Function Read2DArrayFromString( _
    vnt2dArray, StrVariant As String, _
    Optional Str1DFlag As String = ",", _
    Optional Str2DFlag As String = vbCrLf) As Long
    '目的 :从一个串得到一个2维数组
    '相关模块:
    '输入:
    '返回:如果操作成功完成,返回0,否则返回Err.Number
    On Error GoTo PROC_ERR
    Dim lngErr As Long
    Dim lngLoop As Long
    Dim strOneArray As String
    Dim strAllArray As String
    '[参数有效性检测]
    If StrVariant = "" Then
    lngErr = -1: GoTo PROC_EXIT
    End If
    '[通过参数有效性检测,处理正事]
    Dim avnt1DArray, avnt2DArray, avntTemp
    ReDim avnt2DArray(0)
    avnt1DArray = Split(StrVariant, Str2DFlag)
    For lngLoop = 0 To UBound(avnt1DArray)
           If avnt1DArray(lngLoop) <> "" Then
       avntTemp = Split(avnt1DArray(lngLoop), Str1DFlag)
       ReDim Preserve avnt2DArray(lngLoop)
       avnt2DArray(lngLoop) = avntTemp
          End IfNextPROC_EXIT:
    vnt2dArray = avnt2DArray
    Read2DArrayFromString = lngErr
    Exit Function
    PROC_ERR:
    lngErr = Err.Number
    Debug.Print "Read2DArrayFromString.Err(" & Err.Number & "):" & Err.Description
    GoTo PROC_EXIT
    End Function'********************************************
    实例说明:
    一个csv文件内容如下
    conTest="a,b,c,d" & vbcrlf &  _
    "a1,b1,c1,d1" & vbcrlf & _
    "a2,b2,c2,d2" & vbcrlfdim vnt2dArray
    Dim lngRet As Long
    Dim strVar As String
    strVar =conTest
    lngRet = mdlUtilities.Read2DArrayFromString(vnt2dArray, strVar, ",")if lngRet=0 then
          dim lngWhichRow ,lngWhichCol
         '显示第X行第Y列的元素
          msgbox vnt2dArray(lngWhichRow)(lngWhichCol)
    end if
    '在这个例子
    'vnt2dArray(0)(0)="a"
    'vnt2darray(0)(1)="b"
    'vnt2dArray(1)(0)="a1"
    希望能够对你有一点帮助。'********************************************
    '对不起,放一点广告,对您带来的不便敬请原谅!
    广告:我的第一个Visual Basic 6.0作品,欢迎大家试用,注册用户得到全部源代码。一、EasyDialog能够做什么?
    (为了增强Windows通用打开/保存对话框,能够快速的打开经常访问的文件夹或者文件)
    一、快速地在通用打开/保存对话框中打开你经常访问的文件夹/文件。
    二、快速地在Windows Explorer中打开经常访问的文件夹/文件。
    三、快速地在IE浏览器打开你经常访问的网站。
    四、快速地给你的朋友发Email
    五、能够使您方便地按照逻辑分类来组织和管理您的文件夹/文件,您经常访问的网址,您的Email地址。'********************************************
    '*下载EasyDialog:
    http://www.softboyzhou.com/download/EasyDialog.asp
    '***************
    '*购买EasyDialog:
    http://www.softreg.com.cn/shareware_view.asp?id=/7148D197-1C1D-4E84-B92A-EE2CC07D27C0/
    '***************
    '*给我写信:有什么问题请来信。
    [email protected]
    '********************************************
    *为什么我要对注册用户提供源代码呢?
    当我把我的第一个软件作品发布之后。给我的一些朋友发了一封信。信的大致内容是:我刚用Visual Basic 6.0搞了一个软件
    ,希望你们能够下载试用。你们觉得会有人来买这个软件吗?你们觉得我的定价是不是合适呢?
    于是朋友们反馈回来的信息是:
    有的朋友说:软件不错,不过可能市场前景不好,因为市场上有许多同类软件。
    有的朋友说:定价也不是很高。如果你想让很多的人来购买,你必须要找到合适的买主。也就是那些需要你的软件的人。
    有的朋友开玩笑说:我也想学Visual Basic 6.0。不如这样吧!我去注册一份,你把源代码给我吧!
    我有些激动:源代码!你知道这些源代码有多少Module,Class.
    我些是我的全部心血,如果我都给你,我还凭什么混饭吃。
    这个朋友半认真的说:老兄不要激动,我只是和你开玩笑的。我知道你的那些源代码的价值。不过有一句话"人生最美丽的补偿之一,就是人们真诚地帮助别人之后,同时也帮助了自己"。道理很简单:如果你的软件不能够解决别人的问题,别人怎么会来购买呢?。我也知道你现在需要一些资金来运转,你的网站太简陋,我看得请了美术设计帮你弄一弄,你的产品也该做做广告。不如把源代码提供给那些真真需要它的人吧,你帮助了别人,同时也帮助了自己。你的源代码不管是对于初学者,还是那些想提高的朋友都是非常有价值的。我也发现你很有灵感和创意。例如你的网站就是一简单的例子,你刚学了ASP,就搞了一个"无代码解决方案"。那天你写信告诉我,说你的网站开通了,让我去看看,觉得怪怪的。后来你说,你觉得网站更新很麻烦,你的"无代码解决方案"(三个ASP文件 Default.asp,Dir.asp,Content.asp)就是自动根据网站的目录结构来建立动态的页面,这样就使一个网站很像一个Windows的资源管理器。如果你能够让你的灵感和创意来帮助其他的人来解决他们的问题,那些热心善良的人也会来帮助你的。
    听了朋友的话,我久久地不能平静:"人生最美丽的补偿之一,就是人们真诚地帮助别人之后,同时也帮助了自己"
    '********************************************'*我的决定
    面对下一个问题,做一个决定,做任何决定都好,任何决定总比没有决定好。
    于是我决定:对于购买了EasyDialog的朋友,开放它的源代码。并且提供长期的Email技术支持。
    如果有很多人怎么办?一天100封信,你受得了吗?
    我的决定:我会将代码注解写得更详细,然后把新的版本发给用户。另外我会将常见的问题汇编到一起,定期的发给用户。
    如果没有人要我的源代码怎么办?
    我的决定:我会有更多的时间,继续开发下一个项目。用我的源代码再写几个程序,决不放弃。'********************************************
    '*我的源代码中有什么?
    *解决方案:怎样实现程序的多语言(我的一个解决方案)
    *解决方案:怎样实现动态帮助(当鼠标指针移动到一个控件上方是,动态显示相关的帮助)
    *解决方案:怎样来用一个文件来保存设置(我的INI文件解决方案,没有文件尺寸的限制,设置串没有长度限制,设置串能够包括回车)
    *解决方案:注册码生成算法和验证算法。(我的一个解决方案)
    .........
    *大量的实用模块
    Module=mdlEnumWindow; EnumWindows.bas
    Module=mdlWindow; mdlWindow.bas
    Module=ApiConst; ApiConst.bas
    Module=mdlMath; mdlMath.bas
    Class=clsEasyDialog; clsEasyDialog.cls
    Class=clsEasyKey; clsEasyKey.cls
    Class=oWindow; oWindow.cls
    Form=frmWindowUnderMouse.frm
    Module=mdlList; mdlList.bas
    Class=clsEditMode; clsEditMode.cls
    Module=mdlShell; mdlShell.bas
    Module=basMisc; basMisc.bas
    Form=frmCommonDialog.frm
    Class=clsHelp; clsHelp.cls
    Class=clsPosition; clsPosition.cls
    Form=frmAbout.frm
    Form=frmDriverE.frm
    Module=mdlUtilities; ..\Utilities\mdlUtilities.bas
    Form=frmEasyDialogD.frm
    Class=clsEncrypt; clsEncrypt.cls
    Form=frmRegisterD.frm
    Module=mdlRegister; mdlRegister.bas
    Module=mdlAbout; mdlAbout.bas
    Module=mdlEasyDialog; mdlEasyDialog.bas
    Module=mdlTextBox; ..\Utilities\mdlTextBox.bas
    Module=mdlSpecialFolder; ..\Utilities\mdlSpecialFolder.bas'********************************************
    '*下载EasyDialog:
    http://www.softboyzhou.com/download/EasyDialog.asp
    '***************
    '*购买EasyDialog:
    http://www.softreg.com.cn/shareware_view.asp?id=/7148D197-1C1D-4E84-B92A-EE2CC07D27C0/
    '********************************************
    '*给我写信:有什么问题请来信。
    [email protected]
      

  3.   

    用API函数:getprivateprofilestring吧,很容易的。