TMemoryStream中可不可以搜索指定字串?谢谢啦

解决方案 »

  1.   

    顶!!请问TMemoryStream中怎样搜索指定字串?哪个方法?
      

  2.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      Str: string;
      Ret: string;
      EndChar: Char;
      Stream: TMemoryStream;
    begin
      Str := 'Test Str';
      EndChar := #0;  Stream := TMemoryStream.Create;
      Stream.Write(Str[1], Length(Str));
      Stream.Write(EndChar, 1);  Stream.Position := 0;
      Ret := StrPos(PChar(Stream.Memory), PChar('Str'));
      ShowMessage(Ret);
      Stream.Free;
    end;千万要记住:流的结尾要用#0作结尾,否则内存会益出。
      

  3.   

    上述改成:
    procedure TForm1.Button3Click(Sender: TObject);
    var
      Str: string;
      Ret: string;
      EndChar: Char;
      Stream: TMemoryStream;
    begin
      Str := 'Test Str'+#0;  Stream := TMemoryStream.Create;
      Stream.Write(Str[1], Length(Str));  Stream.Position := 0;
      Ret := StrPos(PChar(Stream.Memory), PChar('Str'));
      ShowMessage(Ret);
      Stream.Free;
    end;
    不行吗?
      

  4.   

    有问题啊,无论搜索是否成功,ret都为空
      

  5.   

    UP!!!能在memorystream的指定位置取出一个字符或替换一个字符吗?
      

  6.   

    var
      LoadStream: TMemoryStream;
      SaveStream: TMemoryStream;
      MemStr: string;
      FindStr: string;
      ReplaceStr: string;
    begin
      LoadStream := TMemoryStream.Create;
      LoadStream.LoadFromFile('C:\123.txt'); // 打开文件 123.txt
      SetLength(MemStr, LoadStream.Size);
      CopyMemory(Pointer(MemStr), LoadStream.Memory, LoadStream.Size);
      FindStr := '7'; // 查找 7
      ReplaceStr := '9'; // 替换为 9
      MemStr := StringReplace(MemStr, FindStr, ReplaceStr, [rfReplaceAll]); // 替换
      SaveStream := TMemoryStream.Create;
      SaveStream.Write(MemStr[1], Length(MemStr));
      SaveStream.SaveToFile('C:\123S.txt'); // 保存文件到 123S.txt
      SaveStream.Free;
      LoadStream.Free;
    end;