做了一个程序,是把一天的数据记录在TRICEEDIT中,然后抽取其中有用的部分存到不同的表中。
现在程序在调试中没有问题,但是不知道为什么,有些记录会重复写入数据库,但是有些记录不见了,但总体的数量不变,不知道是怎么回事?
他有时候又不会,一般在记录多的时候会出现这种问题。
大家有遇到过吗?
有作过类似的东西吗?
都有些什么好的方法?
没有做过也无所谓,随便说说?

解决方案 »

  1.   

    呵呵,注意一下你抽取数据之后是否对Lines使用了Delete或类似的方法以改变Lines的结构。
    如果一定要删除已抽取的行的话建议从最后开始向前循环,可以避免因Lines结构改变而造成程序错误。
      

  2.   

    循环代码如下:大家看看var
    i,Index,ColIndex:integer;
    Color:TColor;
    Str:string;
    begin
    ColIndex:=0;             //Ct的第二维
    index:=Logform.editor.perform(em_lineIndex,x,0);
    LogForm.Editor.SelStart:=index;
    logform.Editor.SelLength:=1;
    Color:=Logform.Editor.SelAttributes.Color;
    Str:='';
    I:=1;
    while I<=length(logform.Editor.Lines.Strings[x]) do
      begin
      LogForm.Editor.SelStart:=index+i-1;
      logform.Editor.SelLength:=CharType(logform.Editor.Lines.Strings[x],i);
      if Logform.Editor.SelAttributes.Color=Color then
        Str:=Str+copy(logform.Editor.Lines.Strings[x],i,CharType(logform.Editor.Lines.Strings[x],i))
        else begin
        if Color<>clwhite then begin
        Ct[r,ColIndex].Color:=Color;
        Ct[r,ColIndex].Text:=Str;
        inc(ColIndex);
        end;
        Color:=Logform.Editor.SelAttributes.Color;
        Str:=copy(logform.Editor.Lines.Strings[x],i,CharType(logform.Editor.Lines.Strings[x],i));
        end;
      i:=i+CharType(logform.Editor.Lines.Strings[x],i);
      end;    Ct[r,ColIndex].Color:=Color;
        Ct[r,ColIndex].Text:=Str;