转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
用VB处理定长文本的导入         ★★★★

用VB处理定长文本的导入

作者:闵涛 文章来源:闵涛的学习笔记 点击数:813 更新时间:2009/4/23 16:37:57


用VB编写将带分割符的文本导入数据库可能是最经常用到的方式,但是导入定长的文本就不是像前者那样简单了(个人观点)。因为这里需要处理一个技术问题,就是在VB中所有的字符都是按照Unicode进行运算的,所以一个字节的英文字符、数字和两个字节的汉字在VB中都是两个字节。那么在我将一行文本ReadLine读到一个字符串中后,如果从某位至某位是单双字节混合的字符串,那就没有办法用Mid、Left这类函数确定这个串的长度。因此一直没有找到好的方法处理,让我郁闷了久久。

最后我只能使用API来处理,调用了CopyMemory进行字符串Copy,因为这个函数是可以按字节操作的。在使用中感觉效果还是可以的,下面我就将这个API又包了一层函数。

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Api声明''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

''''按字节返回字符串的函数
Private Function GetByteString(ByVal strInput As String, ByVal intLen As Integer) As String
    Dim strRtn As String
    strRtn = Space$(intLen)
    Call CopyMemory(ByVal strRtn, ByVal strInput, intLen)
    GetByteString = strRtn
End Function

''''以下是读取文件和拆分字符串的处理
    Dim fsoReadFile As FileSystemObject               ''''FSO Object
    Dim flFile As File                                ''''File Object
    Dim tsTxt As TextStream
    ''''打开文本文件
    Set fsoReadFile = New FileSystemObject
    Set flFile = fsoReadFile.GetFile(strFileName)
    Set tsTxt = flFile.OpenAsTextStream(ForReading)
    Do While Not tsTxt.AtEndOfStream
        strTMP = tsTxt.ReadLine
        ''''读取前十个字节的字符
        strInsert(0) = GetByteString(strTMP, 10)
        ''''将原字符串缩短
        strTMP = Right(strTMP, Len(strTMP) - Len(strInsert(0)))
        ·
        ·
        ·
        ·
        ·
        ·
        ·
        ·
        ''''分别按长度截取,以此类推
    Loop
    tsTxt.Close
    Set fsoReadFile = Nothing

这是我能够想到的解决方法,希望有好方法的朋友能够指正(40Star@163.com)!


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台