for j:=1 to 3 do
  begin
  table1.append;
  table1.fields[j-1].AsString:=GetSubStr(MyLine,Space);
  table1.post;
  end;
这一段代码有问题,你对一个字符串执行了三次的写入数据库操作,所以有三跳记录

解决方案 »

  1.   

    table1.append;
    for j:=1 to 3 do
      begin
        table1.fields[j-1].AsString:=GetSubStr(MyLine,Space);
      end;
    table1.post;并且MyLine这个传入的参数应该在Space中要改变,所以应该是个全局变量;另外在Space中要对MyLine赋一个改变后的值,我建议利用字符串数组完成  
      

  2.   

    修改后的代码如下:var
      Form1: TForm1;
      MyLine:string;Const Space=' ';implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      str:string;
      i,j:Integer;
    begin
      MyLine:='sjh man cn ';
      begin
    //  table1.append;
      for j:=1 to 3 do
      begin
        ShowMessage(GetSubStr(MyLine,Space));  //*测试用的*//
    //    table1.fields[j-1].AsString:=GetSubStr(MyLine,Space);
      end;
    //  table1.post;
      end;
      end;Function Tform1.GetSubStr(varaString:String; SepChar:String):String;
    var
      Mystr:String;
      StrLen:Integer;
      SepCharPos:Integer;
      varastring1:string;
    begin
      StrLen:=Length(varaString);
      SepCharPos:=Pos(SepChar,varaString);  //计算分割符在子串中的位置
      MyStr:=Copy(varaString,1,SepCharPos-1);//将分割符前所有字符放到mystr串中
      Delete(varaString,1,SepCharPos);//除去分割符和分割符前的子串
      MyLine := varaString;   //*我增加的*//
      GetSubStr:=MyStr;//返回一个字段
    end;
      

  3.   

    来晚了.
      for j:=1 to 3 do
      begin
      table1.append;
      table1.fields[j-1].AsString:=GetSubStr(MyLine,Space);
      table1.post;
      end;
    ////////上面一段有问题/////////////改为
    table1.append;
    for j:=1 to 3 do
      begin
        table1.fields[j-1].AsString:=GetSubStr(MyLine,Space);
      end;
    table1.post;