电脑中有一个文件,是经过下面代码加密的一个纯文本文件procedure CodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
begin
...
在此处理Buf的内容
...
end;现在想把这个文件的内容读取到memo中(不用写入文件),怎么实现呢(已有解密函数UnCodeBuf,参数和CodeBuf相同)?

解决方案 »

  1.   

    Memo1.LoadFile('文件名');
    这样就可以了
    你试一下
      

  2.   

    To:fangsp 
    谢谢回答,可是不是这个意思。
    我想把普通的文本文件转化成二进制文件(方法随便),也可以把二进制文件还原成文本文件到Memo控件中(这个过程不要在磁盘中生成临时文件),该怎么做呢?
      

  3.   

    参考如下代码:
    procedure CodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
    var
      I: Integer;
    begin
      if Password = '' then Exit;
      for I := 0 to BufSize - 1 do
        Buf[I] := Buf[I] xor Ord(Password[I mod Length(Password) + 1]);
    end;procedure UnCodeBuf(var Buf: array of byte; BufSize: integer; Password: string);
    var
      I: Integer;
    begin
      if Password = '' then Exit;
      for I := 0 to BufSize - 1 do
        Buf[I] := Buf[I] xor Ord(Password[I mod Length(Password) + 1]);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      A: array of Byte;
      S: string;
    begin
      // 写入
      S := Memo1.Text;
      if S = '' then Exit;
      SetLength(A, Length(S));
      Move(S[1], A[0], Length(S));
      CodeBuf(A, Length(A), 'zswang 路过');
      with TMemoryStream.Create do try
        Write(A[0], Length(A));
        SaveToFile('c:\temp\temp.dat');
      finally
        Free;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      A: array of Byte;
      S: string;
    begin
      // 读取
      if not FileExists('c:\temp\temp.dat') then Exit;
      with TMemoryStream.Create do try
        LoadFromFile('c:\temp\temp.dat');
        SetLength(A, Size);
        Read(A[0], Size);
        UnCodeBuf(A, Length(A), 'zswang 路过');
        SetLength(S, Size);
        Move(A[0], S[1], Size);
        Memo2.Text := S;
      finally
        Free;
      end;
    end;