function TFrm_FncUpdateManager.StreamToString(
  aStream: TStream): String;
var
  vi: Integer;
begin
  Result := '';  if not Assigned(aStream) then
    Exit;  SetLength(Result, aStream.Size);  for vi := 0 to Pred(aStream.Size) do
  begin
    aStream.Position :=  vi;
    aStream.Read(Result[Succ(vi)], 1);
  end;end;

解决方案 »

  1.   

    你用流的话用不着这么麻烦
    TStringStream用这个流 进行读写操作aStream.WriteString('啊打发发生发生飞');aStream.ReadString('啊打发发生发生飞');
      

  2.   

    再其次 Stream是个抽象类,你不能直接调用的
      

  3.   

    1. 那个循环没必要function TFrm_FncUpdateManager.StreamToString(
      aStream: TStream): String; 
    begin 
      Result := ''; 
      if not Assigned(aStream) then Exit; 
      SetLength(Result, aStream.Size); 
      aStream.Position :=  0; 
      aStream.Read(Result[1], aStream.Size); 
    end;2. 是否是GBK编码, 取决于流里面的内容
      

  4.   

    的确.
    这这里只是声明实例是一个TStream或者TStream的子类,又没有去创建TStream类的实例是不是GBK需要自己判断一下
      

  5.   

    因为服务端的是JAVA要把两边的的流包进行调用,所以要MD5验证,都转正同一的格式,我传的是文件流。
      

  6.   

    怎么样把流都传换成GBK呢
      

  7.   

    我读的是文件流,用这方法把流转成String,DELPHI的Sting是默认GBK编码吗
     
      

  8.   

    找到所有你想转换的字符,然后找出对应的GBK,做成一张表。
      

  9.   

    将那两个“内存流”的信息,
    最好是以“字符串”的方式,保存到数据库
    如何转换
    我的帖子如下:
    http://topic.csdn.net/u/20111019/11/de778adb-8874-41e9-b644-14b0a4f5286f.html?seed=1628973165&r=76064107#r_76064107
    还请多多赐教