现有函数GetAnyFile(),功能是取出文件的内容,我用memo来显示取出的文本内容(memo1.text:=GetAnyFile(OpenDialog1.FileName);)
  对于.txt/.htm/.mht等文件都可以显示原有内容,可是对于word文档就不行,取出的是乱码一样的冬冬,不知道该如何解决
  
function GetAnyFile(const AFileName: String): String;
var
  fs: TFileStream;
begin
  Result := '';
  if not FileExists(AFileName) then Exit;
  fs := TFileStream.Create(AFileName, fmOpenRead);
  try
    SetLength(Result, fs.Size);
    fs.Read(Pointer(Result)^, fs.Size);
  finally
    fs.Free;
  end;
end;

解决方案 »

  1.   

    搜索一下论坛很多相关的:
    http://expert.csdn.net/Expert/TopicView1.asp?id=1365156
    http://expert.csdn.net/Expert/TopicView1.asp?id=1876640http://expert.csdn.net/expert/forum.asp
      

  2.   

    那是因为word文件有自己的格式表示符等等,你用记事本打开word文件也一样。你应该ole使用word服务器。
      

  3.   

    使用ole或其他方法打开word文件
    全选并拷贝word文件
    在memo中粘贴
      

  4.   

    我主要是要做一个控件,GetAnyFile()是供控件中的一个函数调用的,见下:
    function  TDigitalSafe.SEH_GetFile(const filename: WideString): WideString;
    begin
    result:= GetAnyFile(filename);
    end;
    返回的是文件的内容,外面的jsp页面通过控件来获取文件的内容,所以不能用打开word文件的方式实现吧,能否隐含性的获取呀?
      

  5.   

    word生成的.doc文件实际上是个二进制文件,memo只能显示文本文件的内容,所以你的操作失败了。那个函数本身并没有错误。由于.txt/.htm/.mht都是由文本构成的,所以可以显示在memo中。你用记事本打开这几种类型的文件,应该和你在memo中看到的内容是一致的。
      

  6.   

    那我取出的这个内容怎样可以看到呢?不用memo,用什么能显示一下呀?
      

  7.   

    好耶好耶,需要的需要的
    另外又想到一个问题:
    function  TDigitalSafe.SEH_GetFile(const filename: WideString): WideString;
    begin
    result:= GetAnyFile(filename);
    end;
    这个函数怎么才能获取word里面真实的内容呢?而不是二进制流的方式?或者它只能获取二进制的内容?
      

  8.   

    procedure SaveStreamToFile(const AnyFileStream: String; const AFileName: String): String;
    var
      fs: TFileStream;
    begin
      fs := TFileStream.Create(AFileName, fmCreate);
      try
        fs.Write(Pointer(AnyFileStream)^, Length(AnyFileStream);
      finally
        fs.Free;
      end;
    end;
      

  9.   

    对不起,procedure是没有返回值的
      

  10.   

    SaveStreamToFile好像不能恢复原来的word文档,我原来的word里只有一行文字,转换之后生成的变成34页了,:<
      

  11.   

    或者可否将整个word文档转换成文件流呀?我要对文件流进行加密(我手上有现成的dll提供函数进行加密,我只要将word等文件的内容或整个文件作为参数传给加密函数),然后上传服务器,再由服务器端的java包解密,然后再回复为word文档,问题就是我如何获取这个文件流?