请教各大师:
    如何求得Memo中的连续出现的字符的次数?
如Memo1中有如下内容:
45
12
23
23
23
99
用何方法或函数得到连续的‘23’共有几行?(这里是3)多谢!

解决方案 »

  1.   

    var i,n:integer;
    begin
      n:=0;
      for i:=0 to Memo1.Lines.Count-1 do
        if Memo1.Lines[i]='23' then n:=n+1;
      ShowMessage(IntToStr(n));
    end;
      

  2.   

    如果你知道了要查找的字符串就如楼上给出的方法
    整理一下:
    function SearchSubStr(SubStr:String):integer;
    var i,n:integer;
    begin
      n:=0;
      for i:=0 to Memo1.Lines.Count-1 do
        if Memo1.Lines[i]=SubStr then n:=n+1;
      Result:=n;
    end;
      

  3.   

    楼上的两位,楼主要的是连续出现的次数,,连续哦,呵呵procedure TForm1.Button1Click(Sender: TObject);
    function SchStr(s: string): integer;
    var
      i, startS, endS: integer;
    begin
      startS := 0;
      endS := 0;
      for i:=0 to (Memo1.Lines.Count-1) do
      begin
        if (Trim(Memo1.Lines[i])=s) then
        begin
          if startS=0 then
            startS := i;
        end
        else
        begin
          if (endS=0) and (startS<>0) then
            endS := i;
        end;
      end;
      Result := endS - startS;
    end;
    begin
      ShowMessage(IntToStr(SchStr('23')));
    end;
      

  4.   

    修改一下:procedure TForm1.Button1Click(Sender: TObject);
    function SchStr(s: string): integer;
    var
      i, startS, endS: integer;
    begin
      startS := -1;
      endS := -1;
      for i:=0 to (Memo1.Lines.Count-1) do
      begin
        if (Trim(Memo1.Lines[i])=s) then
        begin
          if startS<0 then
            startS := i;
        end
        else
        begin
          if (endS<0) and (startS>=0) then
            endS := i;
        end;
      end;
      Result := endS - startS;
    end;
    begin
      ShowMessage(IntToStr(SchStr('23')));
    end;
      

  5.   

    多谢cuteant(我的这张旧船票是否还能登上你的客船|涛声是否依旧)但运行几次后会出现错误,不知如何解决?