002~|通海~|2004-09-08~|2000~|7~|1~|2~|3~|4~|5~|6~|7~|8~|9~| 10~|11~|12~|14~|14~|15~|16~|17~|18~|19~|20~|21~|22~|23~|24~|25~| 26~| 27~|,是一个txt文件里面的内容,我想分别取出开始的几个值:002,2004-09-08,2000,7我想把这个值分别取出来.要去和数据库中的数据比较判断是否重复.其~|是我写文件个数据间的分割符.请高手指教.特急!

解决方案 »

  1.   

    var
      str,strtemp : string;
    begin
    str := '002~|通海~|2004-09-08~|2000~|7~|1~|2~|3~|4~|5~|6~|7~|8~|9~| 10~|11~|12~|14~|14~|15~|16~|17~|18~|19~|20~|21~|22~|23~|24~|25~| 26~| 27~|';for i := 1 to length(str) do
    begin
      if str[i] = '~' then
      begin
        //判断strTemp是否在数据库中
        strTemp := '';
      end
      else
      begin
        if str[i] <> '|' then
          strTemp := strTemp + str[i]; 
      end;
    end;
      

  2.   

    pos()可以的!!!
    很简单的啊!
    你可以自己看一下!
    pos('~|',str)返回对应的第一个位置!
    然后你取得之后对它判断啊!
      

  3.   

    给个建议:const
      str = '002~|通海~|2004-09-08~|2000~|7~|1~|2~|3~|4~|5~|6~|7~|8~|9~| ' +
          '10~|11~|12~|14~|14~|15~|16~|17~|18~|19~|20~|21~|22~|23~|24~|25~| 26~| 27~|';
    var
      Txt: string;
      s: TStringList;
    begin
      Txt := StringReplace(str, '~|', ',', [rfReplaceAll]);
      s := TStringList.Create;
      s.CommaText := Txt;
      ShowMessage(s.Strings[3]);  //想取第几个就取第几个
    end;
      

  4.   

    var
      i, n: Integer;
      str,strtemp : string;
    begin
    n := 0;
    str := '002~|通海~|2004-09-08~|2000~|7~|1~|2~|3~|4~|5~|6~|7~|8~|9~| 10~|11~|12~|14~|14~|15~|16~|17~|18~|19~|20~|21~|22~|23~|24~|25~| 26~| 27~|';for i := 1 to length(str) do
    begin
      if str[i] = '~' then
      begin
        //判断strTemp是否在数据库中
        strTemp := '';
        inc(n);
      end
      else
      begin
        if str[i] <> '|' then
          strTemp := strTemp + str[i]; 
      end;
      if n = 3 then
        Break;
    end;
      

  5.   

    luke5678(奇异)  的方法不错
      

  6.   

    不错!呵呵!
    luke5678(奇异)  的方法不错学习了知识!!
      

  7.   

    luke5678(奇异) 方法不错,很有创意
    学习!
    ----------------------------------------------------------------
                 花自飘零水自流,一种相思,两处闲愁。
                   此情无计可消除,才下眉头,又上心头。
    ----------------------------------------------------------------
      

  8.   

    procedure TForm1.Button2Click(Sender: TObject);//取出數值
    var
    j,i:integer;
    begin
    edit2.text:='';
    j:=Length(edit1.Text );
    for i:=0 to j do
    begin
    if edit1.Text[i] in ['~','|']=false then
      edit2.Text :=edit2.text +edit1.Text[i]
    else
      begin
       if edit2.text<>'' then
          listbox1.Items.Add(edit2.text);
       edit2.Text:='';
      end;
    end;
    end;procedure TForm1.Button3Click(Sender: TObject);//檢測是否有重復,若重復則清除
    var
      ts: TStrings;
      i: Integer;
    begin
      ts := TStringList.Create;
      for i := 0 to ListBox1.Items.Count - 1 do
        if ts.IndexOf(ListBox1.Items[i]) = - 1 then
          ts.Append(ListBox1.Items[i]);
      ListBox1.Items.Assign(ts);
      ts.Free;
    end;