unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
mStream: TMemoryStream;
procedure TForm1.FormCreate(Sender: TObject);
//程序开始先创建一个准备要测试的文件
var
strList: TStringList;
begin
strList := TStringList.Create;
strList.Add('aaaaaaaa');
strList.Add('bbbbbbbb');
strList.Add('cccccccc');
strList.Add('dddddddd');
strList.SaveToFile('c:\temp\test.txt');
strList.Free;
{同时建立内存流}
mStream := TMemoryStream.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
//通过流读文件到 Memo
begin
mStream.LoadFromFile('c:\temp\test.txt'); {把文件读入内存流}
Memo1.Lines.LoadFromStream(mStream); {把内存流载入 Memo1}
end;
procedure TForm1.Button2Click(Sender: TObject);
//用字符指针读取流中的内容
var
pc: PChar;
begin
pc := mStream.Memory; {把字符指针指向内存流}
ShowMessage(pc[0]); {a; 第一个字符}
ShowMessage(pc[10]); {b; 这个第二行的第一个字符; 每行8个字再加换行与回车共10个字符}
ShowMessage(pc[20]); {c}
ShowMessage(pc[30]); {d}
end;
procedure TForm1.Button3Click(Sender: TObject);
//从流读入到缓冲区
var
buffer: array[0..2] of Char; {定义个字符缓冲区}
begin
mStream.Seek(0, soFromBeginning);
mStream.Read(buffer, SizeOf(buffer));
ShowMessage(buffer); {aaa}
mStream.Seek(10, soFromBeginning);
mStream.Read(buffer, SizeOf(buffer));
ShowMessage(buffer); {bbb}
mStream.Seek(20, soFromBeginning);
mStream.Read(buffer, SizeOf(buffer));
ShowMessage(buffer); {ccc}
mStream.Seek(30, soFromBeginning);
mStream.Read(buffer, SizeOf(buffer));
ShowMessage(buffer); {ddd}
{关于 Seek 函数:
参数1: Offset 是偏移量;
参数2: Origin 是指针的基准位置, 有三个选值: soFromBeginning、soFromCurrent、soFromEnd
soFromBeginning: 以开始为基准, 此时参数 Offset 要 >= 0;
soFromCurrent: 以当前位置为基准;
soFromEnd: 以结束为基准; 此时参数 Offset 要 <= 0;
返回: 指针新位置
}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
mStream.Free;
end;
end.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~