“表里出现三行记录“。程序有错:
for i:=0 to form1.Memo1.Lines.Count-1 do
          begin
            myline:=regulatestr(form1.Memo1.lines[i],sepchar);
              for j:=1 to getsubstrnum(myline,SepChar) do
                begin
                   append;
0A                   Fields[j-1].AsString:=getsubstr(myline,SepChar);
0A                   post;
                end;
          end;
将Append移动到 for j:=1 to getsubstrnum(myline,SepChar) do 上面。
       —————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
    

解决方案 »

  1.   

    “而且导入一行时,表里出现三行记录”这是你的原因。
    -----------
    for j:=1 to getsubstrnum(myline,SepChar) do
    begin
      append;
      Fields[j-1].AsString:=getsubstr(myline,SepChar);
      post;
    end;
    看出了吗,每循环一次就append一次,也就多了一条记录。
    这里建议edit,在i 循环里append,内层循环是对同一条记录的字段循环,所以用edit就可以了。
    至于判断tab的那部分,我没太看明白>_<,再看看!
      

  2.   

    另外:
    1、Post移动到for j:=1 to getsubstrnum(myline,SepChar) do 外面。           
    2、你的getsubstr函数只能返回一行数据的第一部分。建议将改为:
    Function  Tform1.GetSubStr (aString:String;SepChar:String):TStrings;
    //返回一个字符串列表,而不是一个字符串。在后面这样使用:
    for j:=1 to getsubstrnum(myline,SepChar) do
                    begin           
                       Fields[j-1].AsString:=getsubstr(myline,SepChar).Strings[j-1];
                  
                    end;—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
        
      

  3.   

    function TForm1.GetSubStr(aString, SepChar: String): TStrings;
    var Mystr:String;
        SepCharPos:Integer;
    begin
      MyStr := aString;
      SepCharPos := Pos(SepChar,MyStr);//计算分割符在子串中的位置
      repeat
        Result.Add(Copy(MyStr,1,SepCharPos-1));
        MyStr := Copy(MyStr,SepCharPos+1,Length(MyStr)-SepCharPos);0D
        SepCharPos := Pos(SepChar,MyStr);//计算分割符在子串中的位置
      until SepCharPos = 0;
    end;—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
        
      

  4.   

    我按照你们所说的改正之后再运行时的错误信息是
    Project YY1.exe raised exception class EDBEngineError with message 'invalid filed descriptor'.Process stoped.Use step or Run to continue.我不知道是什么原因!!!
    而且你所说的用edit 的方法我不是很清楚,能不能给我写出来呀!?????
      

  5.   

    append;              
    for j:=1 to getsubstrnum(myline,SepChar) do
                    begin
                       
                       Fields[j-1].AsString:=getsubstr(myline,SepChar);
                       
                    end;
    post;
    这一段,这样改!试试!