| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 编程开发 > VB教程 > 文章正文 用户登录
用V2组件制作单选
连接SQL SERVER的
使用Visual Studi
一个自动生成用AD
VB访问SQLServer的
用VC程序来创建SQ
在 SQL Server 2K
VB程序中处理随机
VB编程的必备技巧
让VB应用程序支持

用VB处理定长文本的导入           

用VB处理定长文本的导入

作者:佚名 来源:不详 更新:2006-8-25 21:05:35 错误报告 我要投稿
用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)!

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。