第一种笨笨的方法,用pos的方法,查找分隔符的位置
第二种办法 stringreplace(sSour,',',#13,[rfReplaceAll])函数,用换行符替换分隔符,放在stringlist里面。

解决方案 »

  1.   

    如果我要取$3里面的205.254;是这样写吗?parameters.parambyname('字段').value :=stringreplace(vLine,',',#13,[rfReplaceAll])+ stringreplace(vLine,',',#13,[rfReplaceAll])+Trim(Copy(vLine,4,7));
      

  2.   

    可以使用TStringLIst
    设置TStringList的dilimttext和分隔符
    然后操作TStringlist
      

  3.   


    var
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:='$';
      nst.DelimitedText:=memo.Text;
      for I:=0 to nst.Count-1 do
      begin
     
        if vline = '' then continue;
        with ADOQuery do
        begin
          Close;
          Sql.Clear;
          Sql.Add('insert into 表名 (heave,CreateTime) values (:heave,:CreateTime)');
          parameters.parambyname('heave').value := nts[i]+'m';
          parameters.parambyname('CreateTime').value := Now;
          ExecSql;
        end;
      end;
      

  4.   

    大侠好哈!是把Delimiter := '#10' 换行吗? 那怎么进行循环啊?
      

  5.   

    大侠好哈!是把Delimiter := '#10' 换行吗? 那怎么进行循环啊?
    可以用$也可以用#10
    循环用 for I:=0 to nst.Count-1 do你看下这个例子
    procedure TForm1.btn4Click(Sender: TObject);
    var
      i:integer;
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:=#10;
      nst.DelimitedText:='1'+#10+'2'+#10+'3';
      for i:=0 to nst.Count-1 do
      begin
        showmessage(nst[i]);
      end;
    end;
      

  6.   

    数据库三个字段:V1,V2,V3分别在:$1行,$2行,$3行里面去数据;然后再循环下去
      

  7.   

    var
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:='$';
      nst.DelimitedText:=memo.Text;
      for I:=0 to nst.Count-1 do
      begin
        if (i+1) mod 3=1 then
        begin
          //处理V1
        end;    if (i+1) mod 3=2 then
        begin
          //处理V2
        end;    if (i+1) mod 3=3 then
        begin
          //处理V3
        end;  end;
      

  8.   

    或者
    var
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:='$';
      nst.DelimitedText:=memo.Text;
      for I:=0 to nst.Count-1 do
      begin
        if copy(nst[i],1,2)='$1' then
        begin
          //处理V1
        end;
     
        if copy(nst[i],1,2)='$2' then
        begin
          //处理V2
        end;
     
        if copy(nst[i],1,2)='$3' then
        begin
          //处理V3
        end;
     
      end;
      

  9.   

    如果是逗号分隔,应该可直接用Stringlist.CommaText:= 某行字符串 。
      

  10.   

     这样是保存三条记录;三个字段要保存在一条记录里面;相当于memo里面三行当做一行来进行循环
      

  11.   

    在memo中三行如何当做一行来进行循环啊
      

  12.   

    var
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:='$';
      nst.DelimitedText:=memo.Text;
      for I:=0 to nst.Count-1 do
      begin
        if (i+1) mod 3=1 then
        begin
          V1:=
        end;
     
        if (i+1) mod 3=2 then
        begin
          V2:=
        end;
     
        if (i+1) mod 3=3 then
        begin
          V3:=
        end;    if ((i+1) mod 3=0) and (i>0) then
        begin
          //sql语句插入v1,v2,v3
        end;
      

  13.   

    var
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:='$';
      nst.DelimitedText:=memo.Text;
      for I:=0 to nst.Count-1 do
      begin
        if (i+1) mod 3=1 then
        begin
          V1:=
        end;
     
        if (i+1) mod 3=2 then
        begin
          V2:=
        end;
     
        if (i+1) mod 3=3 then
        begin
          V3:=
        end;    if ((i+1) mod 3=0) and (i>0) then
        begin
          //sql语句插入v1,v2,v3
        end;
     大侠!怎么每隔一秒插入一条数据到数据库啊??
      

  14.   

    var
      nst:TStringList;
    begin
      nst:=TStringList.Create;
      nst.Delimiter:='$';
      nst.DelimitedText:=memo.Text;
      for I:=0 to nst.Count-1 do
      begin
        if (i+1) mod 3=1 then
        begin
          V1:=
        end;
     
        if (i+1) mod 3=2 then
        begin
          V2:=
        end;
     
        if (i+1) mod 3=3 then
        begin
          V3:=
        end;    if ((i+1) mod 3=0) and (i>0) then
        begin
          //sql语句插入v1,v2,v3
        end;
     大侠!怎么每隔一秒插入一条数据到数据库啊??使用定时器Timer,interval设置为1000
      

  15.   

        end;
     大侠!怎么每隔一秒插入一条数据到数据库啊??使用定时器Timer,interval设置为1000 在timer事件里面执行;1秒中全部插入了;隔一秒又全部执行了
      

  16.   

    在timer事件里面执行;1秒中把Memo数据全部插入了数据库;每隔一秒又全部插入一次;怎么进行判断
      

  17.   

        end;
     大侠!怎么每隔一秒插入一条数据到数据库啊??使用定时器Timer,interval设置为1000 在timer事件里面执行;1秒中全部插入了;隔一秒又全部执行了定时器里的ontimer事件里的代码不要写成全部执行,写成按你要求的规则来执行
      

  18.   


    procedure TFrmMain.Timer1Timer(Sender: TObject);
    var
      I: Integer;
      vLine: string;
    begin
      with memo1 do
      for I:=0 to Lines.Count-1 do
      begin
        vLine := trim(lines.Strings[i]);
        if vline = '' then continue;
        with frm_DM.ADOQuery do
        begin
          Close;
          Sql.Clear;
          Sql.Add('insert into FsySpeed ........);
          parameters.parambyname('FsyId').value := 'Fsyplcy';
          parameters.parambyname('Fangle').value := Trim(Copy(vLine,8,3))+'°';
          parameters.parambyname('speed').value := Trim(Copy(vLine,14,3));
          parameters.parambyname('CreateTime').value := Now;
          ExecSql;
        end;
      end;
    end;每次运行一秒中就把memo里面的数据全部插入了
      

  19.   


    var
       I: Integer;procedure TFrmMain.FormShow(Sender: TObject);
    begin
      i:=0;
    end;procedure TFrmMain.Timer1Timer(Sender: TObject);
    var
     // I: Integer;
      vLine: string;
    begin
      with memo1 do
      //for I:=0 to Lines.Count-1 do
      //begin
        vLine := trim(lines.Strings[i]);
        if vline = '' then continue;
        with frm_DM.ADOQuery do
        begin
          Close;
          Sql.Clear;
          Sql.Add('insert into FsySpeed ........);
          parameters.parambyname('FsyId').value := 'Fsyplcy';
          parameters.parambyname('Fangle').value := Trim(Copy(vLine,8,3))+'°';
          parameters.parambyname('speed').value := Trim(Copy(vLine,14,3));
          parameters.parambyname('CreateTime').value := Now;
          ExecSql;
        end;
      //end;
      i:=i+1;
    end;