灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:8297回复:0

TFileStream用法

楼主#
更多 发布于:2012-09-08 13:06

// 写入中文
procedure TForm1.btn1Click(Sender: TObject);
var
   Stream : TFileStream;
  fn : string;
  fname : string;
  Size : Integer;
  Buffer : TBytes;
  Encoding : TEncoding;
begin
  fn := ExtractFilePath(Application.ExeName) + 'config.dat';
  try
    Stream := TFileStream.Create(fn, fmCreate);
    Stream.Position := 0;
    fname := '这是一个测试';
    Encoding := TEncoding.Unicode;
    Buffer := Encoding.GetBytes(fname);
    Size := Length(Buffer);
    Stream.WriteBuffer(Pointer(Buffer)^, Size);
  finally
  Stream.Free;
  end;
end;
// 读取中文
procedure TForm1.btn2Click(Sender: TObject);
var
  Stream : TFileStream;
  fn : string;
  fname : string;
  Size : Integer;
  Buffer : TBytes;
  Encoding : TEncoding;
begin
  fn := ExtractFilePath(Application.ExeName) + 'config.dat';
  try
    Stream := TFileStream.Create(fn, fmOpenRead);
    Stream.Position := 0;
    // fname := '这是一个测试';
    // Encoding := TEncoding.Unicode;
    // Buffer := Encoding.GetBytes(fname);
    // Size := Length(Buffer);
    Size := 12;
    SetLength(Buffer, Size);
    Stream.ReadBuffer(Pointer(Buffer)^, Size);
    Size := TEncoding.GetBufferEncoding(Buffer, Encoding);
    // fname := Encoding.GetString(Buffer, Size, Length(Buffer) - Size);
    fname := WideStringOf(Buffer);
  finally
    Stream.Free;
  end;
end;




喜欢0 评分0
游客

返回顶部