我有一个文件里面有一些关键字象FX,FY都是独立一行写的!!有很多的FX,但只有一个FY
我想从第一个FX取得下面的数据!!但我这样写总是取的最后一个FX到FY 的,
我应如何定位FX第一次出现的位置啊!!  
         stringlist1:=Tstringlist.Create;
         stringlist2:=Tstringlist.Create;
         stringlist1.LoadFromFile(OpenDialog.FileName);
         for i:=0 to stringlist1.Count-1  do
         begin
            if stringlist1[i]='FX' then  i1:=i;
            if stringlist1[i]='FY' then  i2:=i;
         end;
         for i:=i1 to i2 do
         begin
             stringlist2.Add(stringlist1[i]);
         end;

解决方案 »

  1.   

    首部 function AnsiPos(const Substr, S: string): Integer; $[SysUtils.pas
    功能 返回子串Substr在字符中第一次出现的位置
    说明 不存在则返回0
    参考 SysUtils.AnsiStrPos
    例子 SpinEdit1.Value := AnsiPos(Edit1.Text, Edit2.Text);
      

  2.   

    var
     fxf,fyf : boolean;
    begin
             stringlist1:=Tstringlist.Create;
             stringlist2:=Tstringlist.Create;
             stringlist1.LoadFromFile(OpenDialog.FileName);
             for i:=0 to stringlist1.Count-1  do
             begin
                if stringlist1[i]='FY' then  i2:=i;
                if stringlist1[i]='FX' then begin
                  i1:=i;
                  break
                end;
                
             end;
             for i:=i1 to i2 do
             begin
                 stringlist2.Add(stringlist1[i]);
             end;
      

  3.   

    if stringlist1[i]='FX' then  i1:=i;
    找到fx之后,就break跳出循环。当然也可以用ron_xin(星雨)的办法。
      

  4.   

    参考下procedure TForm1.Button1Click(Sender: TObject);
    var
     sl:tstringlist;
     i,j:integer;
    begin
     sl := tstringlist.Create;
     sl.Text := memo1.Text;
     i := sl.IndexOf('FX');
     for j := i  to sl.Count - 1 do
     begin
       memo2.Lines.Add(sl.Strings[j]);
     end;
     sl.Free;
    end;
      

  5.   

    for i:=0 to stringlist1.Count-1  do
       begin
          if stringlist1[i]='FX' then
          begin
            i1:=i;
            break;
          end;
       end;
       for i:=0 to stringlist1.Count-1  do
       begin
          if stringlist1[i]='FY' then
          begin
            i2:=i;
            break;
          end;
       end;