H happy_boy Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-04 #21 这说的就是可能会有超长的(比原来记录要多)的记录,那要如何处理呢?
H happy_boy Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-05 #23 那你说像Foxmail这样的软件不也是自定义的数据文件吗? 它是如何做到的呢?
H happy_boy Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-05 #24 不知道你所说的等长是什么意思,我写入那个文件的都是一个记录 a = record ab : array[0..12]of char; ac : Longint; end; b:a; 我写入的都是B,只是B的成员的值不一样不知道这是不是不等长?
不知道你所说的等长是什么意思,我写入那个文件的都是一个记录 a = record ab : array[0..12]of char; ac : Longint; end; b:a; 我写入的都是B,只是B的成员的值不一样不知道这是不是不等长?
H happy_boy Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-05 #26 O!那我明白了,这样就是等长,那你说如何实现删除功能呢?如果要删除一个 记录好像要操作其后的所有数据向前移吧?有没有好的方法?效率高的.
教 教父 Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-05 #27 文件操作,最方便的还是用文件流,而且对于你所说的这类结构,最好生成两个文件,一个 是每个记录的内容,另一个是除内容外的其它信息,再加上一个指针,指出这个记录的内容 在内容文件中的位置。 至于删除、插入肯定都会导致记录中指针的改变,所以在删除或是插入的记录之后,这个 指针都应该重写,至于内容文件你可以进行删除,也可以不删除,删除的话速度慢些, 不删除的话会产生垃圾,看你的具体情况啦。
文件操作,最方便的还是用文件流,而且对于你所说的这类结构,最好生成两个文件,一个 是每个记录的内容,另一个是除内容外的其它信息,再加上一个指针,指出这个记录的内容 在内容文件中的位置。 至于删除、插入肯定都会导致记录中指针的改变,所以在删除或是插入的记录之后,这个 指针都应该重写,至于内容文件你可以进行删除,也可以不删除,删除的话速度慢些, 不删除的话会产生垃圾,看你的具体情况啦。
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-05 #28 其实留着垃圾也没关系,看看foxpro的数据文件:dbf 人家是商业的数据库都可以留着垃圾, 你也可以象它一样,加多一个变量指示是否本纪录已经给删除的 另外,可以另外设一个功能,compact,当选择了compact的时候才压缩垃圾 不用删一条压缩一条
其实留着垃圾也没关系,看看foxpro的数据文件:dbf 人家是商业的数据库都可以留着垃圾, 你也可以象它一样,加多一个变量指示是否本纪录已经给删除的 另外,可以另外设一个功能,compact,当选择了compact的时候才压缩垃圾 不用删一条压缩一条
H happy_boy Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-05 #29 我是生成两个文件的,一个是索引,一个是内容. 指针我也保存了,可删除某个记录,一定要重写 这个指针的,新加的记录都在文件尾,位置保存 在指针中,要是删除记录就一定要调整一遍的 可是这样做会很慢的,我应该如何做会好一些 呢? 谢谢大家了。
我是生成两个文件的,一个是索引,一个是内容. 指针我也保存了,可删除某个记录,一定要重写 这个指针的,新加的记录都在文件尾,位置保存 在指针中,要是删除记录就一定要调整一遍的 可是这样做会很慢的,我应该如何做会好一些 呢? 谢谢大家了。