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

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

1、读取全部内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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、读取指定内容

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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函数的说明:

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

 

  

 

 

创建时间:2022.03.23  更新时间:

posted on   滔Roy  阅读(1001)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2020-03-23 Web HTML页面,内容禁止选择、复制、右键

导航

点击右上角即可分享
微信分享提示