FF 88 4D 04 01 02 67 0E 06 DB 2E 1D 0D 00 01 01 00 00 05 40 27 9C 4E 36 56 4F 52 98 69 CE 5D 1F 5A 4B EE 79 EA 3C 00 02 03 00 00 00 00 00 00 00 08 01 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 6B 00 00 00 00 00 FF 88 1B 65 01 02 67 0E 06 0B DB 2E 1D 0D 44 3E 25 02 01 B8 2E 08 0F FC 49 25 02 FF 88 0D 66 06 10 04 00 00 AE 2A 06 0D如上字符串如何分割以FF 88为开始字符分割开来?
我想要分割后效果
FF 88 4D 04 01 02 67 0E 06 DB 2E 1D 0D 00 01 01 00 00 05 40 27 9C 4E 36 56 4F 52 98 69 CE 5D 1F 5A 4B EE 79 EA 3C 00 02 03 00 00 00 00 00 00 00 08 01 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 6B 00 00 00 00 00 
FF 88 1B 65 01 02 67 0E 06 0B DB 2E 1D 0D 44 3E 25 02 01 B8 2E 08 0F FC 49 25 02 
FF 88 0D 66 06 10 04 00 00 AE 2A 06 0D

解决方案 »

  1.   

    var
      s:string;
      i,j,k:integer;
    begin
      s:='FF 88 ****************';
      i:=pos('FF 88',s);
      j:=0;
      while i>0 do
      begin
        memo1.Lines.Add(copy(s,j+1,i-j-1));
        for k:=j+1 to i-1 do s[k]:=' ';
        j:=i+5;
        i:=pos('FF 88',s);
      end;
      

  2.   

    var
      s:string;
      i,j,k:integer;
    begin
      s:='FF 88 ****************';
      i:=pos('FF 88',s);
      j:=0;
      while i>0 do
      begin
        memo1.Lines.Add(copy(s,j+1,i-j-1));
        for k:=j+1 to i-1 do s[k]:=' ';
        j:=i-1;    //错了,这里是减1
        i:=pos('FF 88',s);
      end;
      

  3.   

    const
      _S = 'FF 88';
      _P = #13#10;
    var
      i: Integer;
      s: String;
      ss: TStrings;
    begin
      ss := TStringList.Create;
      try
        s := 'FF 88 ……';
        s := StringReplace(s, _S, _P, [rfReplaceAll, rfIgoreCase]);
        ss.Text := s;
        for i:=0 to ss.Count-1 do
          ss.Strings[i] := _P + ss.Strings[i];
        ShowMessage(ss.Text);
      finally
        FreeAndNil(ss);
      end;
    end;
      

  4.   

    s:=FF 88 4D 04 01 02 67 0E 06 DB 2E 1D 0D 00 01 01 00 00 05 40 27 9C 4E 36 56 4F 52 98 69 CE 5D 1F 5A 4B EE 79 EA 3C 00 02 03 00 00 00 00 00 00 00 08 01 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 6B 00 00 00 00 00 FF 88 1B 65 01 02 67 0E 06 0B DB 2E 1D 0D 44 3E 25 02 01 B8 2E 08 0F FC 49 25 02 FF 88 0D 66 06 10 04 00 00 AE 2A 06 0D 
    s:=trim(replace(s,'FF 88',#13#10+'FF 88'));
      

  5.   


    var
      i: Integer;
      s: String;
      ss: TStrings;
    begin
      ss := TStringList.Create;
      try
        s := 'FF 88 ……';
        s := StringReplace(s, 'FF 88', #13#10, [rfReplaceAll, rfIgoreCase]);
        ss.Text := s;
        for i:=0 to ss.Count-1 do
          ss.Strings[i] := _P + ss.Strings[i];
        ShowMessage(ss.Text);
      finally
        ss.Free;
      end;
    end;