Delphi txt文件的操作[2]用流Stream来读取文件

Delphi  txt文件的操作[2]用流Stream来读取文件

1、读取全部内容

var
  mFileStream: TMemoryStream;
  Filebuf: array of PChar; //声明动态数组   
  iLen: Int64;
begin
  iLen := 0;
  mFileStream := TMemoryStream.Create;
  try
    mFileStream.LoadFromFile('TaoRoy.txt');
    iLen := mFileStream.Size; //获得指定TXT文件的大小   
    SetLength(FileBuf, iLen); //设置动态数组的长度为TXT文件的大小   
    mFileStream.ReadBuffer(FileBuf[0], iLen); //读取TXT文件全部数据  
    Memo1.Text:=string(FileBuf);   // Form1.canvas.Textout(0, 0, string(FileBuf)); //在显示区域上显示字符串;
  finally
    FreeAndNil(mFileStream);
  end;
end; 

2、读取指定内容

 

var
  mFileStream: TMemoryStream;
  Filebuf: array of PChar; //这里声明的是动态数组
begin
  mFileStream := TMemoryStream.Create;
  try
    mFileStream.LoadFromFile('TaoRoy.txt');
    SetLength(FileBuf, 5); //设置动态数组的长度;  
    mFileStream.Seek(5, soFromBeginning); //从文件头开始计算到5个字节处
    mFileStream.ReadBuffer(FileBuf[0], 5); //从seek设置的当前位置往后读取5字节
    Memo1.Text:=string(FileBuf); //Form1.canvas.Textout(0, 0, string(FileBuf)); //在窗体上显示;
  finally
    FreeAndNil(mFileStream);
  end;
end;

 如果超出会显示错误

 关于Seek函数的说明:

function Seek(Offset: Longint; Origin: Word): Longint; override;
//offset 是偏移量;  
//origin的值:
//  soFromBeginning 偏移量是从内存开始的。搜索移动到偏移位置。偏移量必须大于等于0。
//  soFromCurrent  偏移是从当前位置开始的。搜索移动到位置+偏移。
//  soFromEndOffset 偏移量是从内存的末尾开始的。偏移量必须小于等于0,以指示内存缓冲区结束前的字节数。
//注意:Seek在检查为偏移量提供的值时不会出错。如果偏移量会将当前位置移动到小于0(内存开始之前)或大于大小(内存缓冲区结束之后),则不要调用seek。

 

  

 

 

创建时间:2022.03.23  更新时间:

posted on 2022-03-23 16:15  滔Roy  阅读(969)  评论(0编辑  收藏  举报

导航