关于第一个问题:你必须知道OE的DBX文件的详细结构,问题也就在这里。如果你知道DBX文件的构造,用Type语句就可以定义与之匹配的数据类型,接着就可以很轻松地用Binary方式操作了。  关于第二个问题:实际上这是自行编写数据文件的添加删除问题,有个解决办法。把你要修改位置之前的数据一次性读出写到另一个文件(临时文件),然后对你要操作的记录进行删除或添加,然后写到临时文件里(如果是添加)。接着将当前操作部分后面的记录一次性读出写到临时文件,完成添加或删除操作。只要三次Out和Put语句就可以完成,需要一个Byte数组来读写。这种办法的速度是最快的。但是前提是:你必须知道记录的长度并且知道它的位置。具体流程如下:  从文件第一字节到记录开始地址(记录号码乘记录字节长度加数据区偏移量)减一这一段是前部数据[PD]。
  从记录开始(方法同前面)到记录结束(以LenB函数取记录变量得到)是你操作的位置[SD]。
  从记录结束加一字节到文件结尾(LOF取得)的部分是后部数据[BD]  读PD写到临时文件[TF]
  进行增加删除操作:
    插入记录—先存SD到TF,然后存新的记录。
    删除记录—不做任何操作,直接进行后面的保存BD的动作。
    更改记录—修改SD,然后存到TF。
  保存BD到TF。
  关闭文件(千万别忘记啊!否则出错)
  [将被操作文件改名为一个随机文件号,作为备份文件(可以实现Ctrl+Z多次撤消功能)]
  [将TF改名为被操作文件]

解决方案 »

  1.   

    To kitegirl(小仙妹):
    妳說的方法贊同﹐我以前也是這樣作的﹐不過我看Outlook Express在實現刪除時他沒有產生臨時文件﹐我始終想不明白﹐﹐所以才問的﹐還有別的方法嗎﹖
      

  2.   

    用数组也可以代替文件,在内存中进行。ReDim的Pr?????(抱歉,没记住)的关键字就可以实现类似文件追加的效果。
      

  3.   

    像FoxMail一样的邮件存储在删除只是标记一下邮件头就行了最后压缩邮箱的时候才处理删除的,所以速度会快增加的时候也只是追加到文件末尾,所以不必使用临时文件的OutLook从来不用的,不清楚
      

  4.   

    To progame(来来往往,不知所云.......) 
    Foxmail在刪除郵件是把文件轉存到Trash.box﹐但也不是象妳所說的作刪除標記
      

  5.   

    转移后它的In.box不会变小的,你可以使用记事本什么的打开看看
      

  6.   

    第二個問題已結﹐感謝 progame(来来往往,不知所云.......)  kitegirl(小仙妹)﹐等結貼時會給你們分的﹐再次謝謝
    不過還有第一個問題誰能告訴我??????????????????????????
    微軟的技術人員在哪里????????????????
      

  7.   

    高手来了:
    请到 http://www.wotsit.org/搜一下dbx文件格式,有一个人用c++写了一个读dbx文件的程序,有原马, 我想你可以很容易的将它翻译成vb.