ms1 := Tmemorystream.Create;
  aa:=TStringStream.Create(s);
  try
    ms1.LoadFromFile(infile);
    ms1.SaveToStream(aa);
    s:=aa.DataString;
    ShowMessage(s);
  
如果简单的读取文件再转string得到一堆NULL值.

解决方案 »

  1.   

    aa.position := 0 试试
      

  2.   

    如果你想得到可以被你肉眼能分辨出来的字符串,那请你将得到的原始字符串进行base64编码,呵呵
    zip文件时二进制文件,其中包含#0字符是再正常不过的了,幸好delphi的字符串定义不像c中那样,
    遇到#0就被截断了,否则,你连得到正确字符串的机会都没有。uses
      EncdDecd;procedure TForm1.Button1Click(Sender: TObject);
    var
      ms1:TMemoryStream;
      aa: TStringStream;
    begin
      ms1 := Tmemorystream.Create;
      aa := TStringStream.Create(s);
      try
        ms1.LoadFromFile(infile);
        ms1.Seek(0, soFromBeginning);
        EncodeStream(ms1, aa);
        aa.Seek(0, soFromBeginning);
        s := aa.DataString;
        ShowMessage(s);
      finally
        ms1.Free;
        aa.Free;
      end;
    end;
      

  3.   

    zip文件内容里有不可见字符是很正常的
      

  4.   

    用TDecompressionStream或弄成16進制試試看