中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Basic > 综合文章
用VB处理定长文本的导入
作者:未知 时间:2002-11-29 12:12 出处:Blog 责编:chinaitpower
              摘要:用VB处理定长文本的导入


用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)!

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有