如果从文件的头开始顺序向后处理,能确定出每条数据记录的长度 或 下条数据记录的头部,就可以比较快的处理了。建议:
a. 你要写出:在文件中任意一种数据记录开始的位置都可以判断出这个记录的格式的子过程。b. 你要写出:根据一个数据记录在文件中的位置,读取记录内容并处理记录数据的一组子过程,每种格式对应一个子过程。
   这里的处理应该是送到数据库中吧?c. 应该能从前两类子过程中得到下一个数据记录开始的位置。

解决方案 »

  1.   

    我想你可以先读一个大块 如10MB在内存中操作,分析,这样就不要怕跟不上了
    如果分析出来没有读完,就再读10MB,我想你读的数据总是有用不着的,我想就可丢掉,不必浪费内存
      

  2.   

    对了,忘记了联系方法
    Email: [email protected]
    OICQ:372258
    能用OICQ,更好用OICQ,会快一些
      

  3.   

    还有一个问题,文件用UEdit打开后所显示的十六进制代码竟然就是数据值(如上),这是否就是以二进制方式写入的文件?如果是,该怎样读?另外能不能介绍一下二进制文件的读写过程,特别是那种有多个数据段的文件。(所谓“多个数据段”是我自己想的词,不知是否确切,就是象Word那样在文件中可以存放文字,窗体,版本,程序等各种数据信息那样)
      

  4.   

    FileOpen
    FileSeek
    FileRead
    FileWrite
    FileClose
    查你的DELPHI帮助。
      

  5.   

    另使用WIN32API中CreateFile中建立加FILE_ATTRIBUTE_TEMPORARY属性文件作为读写交换用,
    可提高存取速度.
      

  6.   

    在Delphi中,读固定格式的文件是很方便的.比如你的例子,可以定义一个文件类型 
    var
      hFle: File of Byte.
    然后读的时候是按Byte读的.[Byte]还可以换成任意结构!"多个数据段"在Win32中的意思是复合文挡,比如Word.复合文挡里面可以存放任意数目的"目录"(类似目录,原来的名字一下子想不起来)和流(类似于文件的概念).因此一个复合稳当相当于
    一个驱动器或卷,里面可以有很多不同的目录和文件.我想你得先定义你自己的存贮结构,然后扫描它的文件.将遇到的没一个记录项田如你的存储结构中.然后进行分析.
      

  7.   

    to whoo:
    你说先定义自己的存贮结构,但实际往往是不固定长度的数据,如Word中的文本,有长有短,是要定义一个动态结构吗,但这样不能建立文件类型呀。怎么办?
      

  8.   

    存贮结构比一定的是复合文档,可以是Record,也可以是Table(Database).
    simplest example:
    type mySet = record
      Time: DWORD;
      Source: DWORD;
      Event: DWORD;
      Value: DWORD;
    end;
      

  9.   

    to whoo:
    能不能说详细点,最好有个完整的例子。
      

  10.   

    建议你看一下Windows的管道技术,应该可以将他的输出定向到自己程序的输入中来。
      

  11.   

    我也有同样的问题,使用随机的文件按字节读取是不成的,里面有控制码或校验码,如果有时间倒是可以测试一下他的具体格式,不过我没测试过。最简单的办法是转换成文本文件,大概又不适用控制环境。如果有人编写过二进制转换文本的程序,他一定会给你帮助的。你的源码可能是一段EPROM中的源值,请教设备厂商也可以。如果你解决,能通知我吗?[email protected].