当前位置: 首页 > 编程日记 > 正文

结构化文件存取

纲要:
AssignFile: 关联
Rewrite: 创建并打开一个新文件, 如已存在则覆盖
Reset: 打开已存在的文件; 追加也要用它先打开, 然后再移动指针; Append 是文本文件专用的
CloseFile: 关闭

FileSize: 记录数
FilePos: 返回文件的当前位置
Seek: 把文件指针移到指定位置(只用于结构化文件)
Eof: 文件尾

Read: 读
Write: 写

另外: 包含长字符串、变量、类实例、接口或动态数组的记录不能写入类型文件中!

//操作示例:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}typeTPersonRec = packed recordname: string[12];age: Word;birthday: TDate;end; //先定义一个结构varDataFile: file of TPersonRec;  //声明 DataFile 用来读写 TPersonRec 结构数据PersonRec: TPersonRec;  //声明结构变量FileName: string = 'c:\temp\test.dat';  //准备操作的文件//创建并写入文件
procedure TForm1.Button1Click(Sender: TObject);
beginAssignFile(DataFile,FileName);  //关联文件Rewrite(DataFile);  //建立文件, 如果存在就覆盖PersonRec.name := '张三';PersonRec.age := 18;PersonRec.birthday := StrToDate('1990-1-1');Write(DataFile,PersonRec);  //写入PersonRec.name := '李四儿';PersonRec.age := 81;PersonRec.birthday := StrToDate('1927-11-11');Write(DataFile,PersonRec);  //写入CloseFile(DataFile);  //关闭
end;//追加数据
procedure TForm1.Button2Click(Sender: TObject);
beginAssignFile(DataFile,FileName);Reset(DataFile);  //Append 只对文本文件Seek(DataFile,FileSize(DataFile));  //移到文件尾, 这里的 FileSize 表示有多少条记录PersonRec.name := '王二麻子';PersonRec.age := 1;PersonRec.birthday := StrToDate('2006-12-19');Write(DataFile,PersonRec);PersonRec.name := '嫦娥';PersonRec.age := 2000;PersonRec.birthday := StrToDate('0007-7-7');Write(DataFile,PersonRec);CloseFile(DataFile);end;//读取数据(用Memo显示数据吧)
procedure TForm1.Button3Click(Sender: TObject);
beginAssignFile(DataFile,FileName);Reset(DataFile);Memo1.Clear;Read(DataFile,PersonRec);  //读取一条, 指针自动移到下一条Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));Read(DataFile,PersonRec);  //读取下一条Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));Seek(DataFile,FileSize(DataFile)-1);  //指针移到最好一条Read(DataFile,PersonRec);Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));CloseFile(DataFile);{显示结果:张三181990-1-1李四儿811927-11-11嫦娥20000007-7-7
}
end;//修改数据
procedure TForm1.Button4Click(Sender: TObject);
beginAssignFile(DataFile,FileName);Reset(DataFile);Seek(DataFile,3);  //指针移到第四条Read(DataFile,PersonRec);  //读取PersonRec.age := 0;PersonRec.birthday := StrToDate('2007-10-24');Seek(DataFile,3);  //指针移到第四条Write(DataFile,PersonRec);  //写入CloseFile(DataFile);
end;//读取所有数据
procedure TForm1.Button5Click(Sender: TObject);
beginAssignFile(DataFile,FileName);Reset(DataFile);Memo1.Clear;while not Eof(DataFile) dobeginMemo1.Lines.Add('第 ' + IntToStr(FilePos(DataFile)+1) + ' 条:');Read(DataFile,PersonRec);Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));Memo1.Lines.Add('');  //来个空行end;CloseFile(DataFile);{显示结果:第 1 条:张三181990-1-1第 2 条:李四儿811927-11-11第 3 条:王二麻子12006-12-19第 4 条:嫦娥02007-10-24
}end;end.

相关文章:

_00021 尼娜抹微笑伊拉克_谁的的最离奇的异常第二阶段 Jedis pool.returnResource(jedis)...

笔者博文:妳那伊抹微笑博客地址:http://blog.csdn.net/u012185296博文标题:_00021 妳那伊抹微笑_谁的异常最诡异第二期之 Jedis pool.returnResource(jedis)个性签名:世界上最遥远的距离不是天涯,也不是海角&#xff0…

WMI技术介绍和应用——查询系统信息

本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本机主要知识点是Win32_ComputerSystem类。通过该类我们…

利用OpenCV实现抖音最强变脸术 | CSDN原力计划

作者 | 亓斌来源 | CSDN原力计划获奖作品(*点击阅读原文,查看作者更多文章)最近一个“最强变脸术”又火爆抖音啦,还不知道的朋友建议先打开抖音,搜索“最强变脸术”看个十来个视频再回来看这篇文章。视频看起来炫酷&am…

思科PIX防火墙的实际应用配置

PIX:一个合法IP完成inside、outside和dmz之间的访问 现有条件:100M宽带接入,分配一个合法的IP(222.134.135.98)(只有1个静态IP是否够用?);PiX515e-r-DMZ-BUN1台&#xff…

CommonJS 的 AMD 规范

异步模块定义(Asynchronous Module Definition,简称 AMD)API 描述了一种定义模块的机制,模块及其依赖模块可以通过这种机制进行加载。该机制特别适用于浏览器。 本规范曾被称为 Modules Transport/C,但本规范主要不是用…

易观的大数据中台之路

作者 | 易观CTO郭炜出品 | AI科技大本营(ID:rgznai100)本文为CSDN即将推出的《新战场:决胜中台》专刊的第 2 篇文章。什么是数据中台?中台的定义来自于投资银行,简单说来,投行当中前台是赚钱的、后台是做支…

WMI技术介绍和应用——查询系统信息和补丁包信息

本文使用了《 WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。( 转载请指明出于breaksoftware的csdn博客)本文主要知识点是Win32_OperatingSystem和Win32_Quick…

Winform与Webform中的对话框

参考MSDNDialogResult result MessageBox.Show("见过打劫的没?", "打、打、打劫", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);switch (result){case DialogResult.OK:MessageBox.Show("你按了确定…

启动Genymotion时报错Failed to initialize backend EGL display

在启动Genymotion的时候报错: video card说的是显卡,你的显卡可能不支持 OpenGL2.0,或者你装的驱动有问题。解决办法:将驱动重新安装一下。可直接下载一个如“驱动人生“一样的驱动软件,把你的显卡驱动更新一下。转载…

新年新方向-斩获新职位

^_^上个星期斩获公司内部竞聘职位:项目管理部总经理,高兴,发展方向变了,以后我会多写一些项目管理的文章和大家分享。WPF的学习和分享也不会停下来,我要全面发展,做社会主义的接班人!YE!项目管理部总经理职…

清华官宣:前百度总裁张亚勤正式加盟清华大学

整理 | Jane出品 | AI科技大本营(ID:rgznai100)12月31日,2019 年的最后一天,在大家沉浸在「总结过去」、「展望未来」之时,清华大学刚刚官宣了一则消息:前百度总裁张亚勤正式加盟清华大学&#…

WMI技术介绍和应用——查询时间信息

本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客) 本文主要介绍Win32_LocalTime和Win32_UTCTime。 如何使…

问题-[VMware Workstation]断电后,重启电脑,之后就提示“内部错误”

问题现象:突然断电后,重启电脑,再打开VMware Workstation,启动不了。之后就提示“内部错误”。问题原因:希望高人指点。问题处理:关闭VMware Workstation,在快捷方式上,右击&#xf…

FC SAN与IP SAN的比较

SAN(Storage Area Network,存储区域网络)是一个由存储设备和系统部件构成的网络。所有的通信都在一个与应用网络隔离的单独的网络上完成,可以被用来集中和共享存储资源。SAN不但提供了对数据设备的高性能连接,提高了数…

“数学不行,干啥也不行!”骨灰级程序员:其实你们都是瞎努力

编程圈一直都流传着一个段子:一流程序员靠数学,二流程序员靠算法,末端程序员靠百度,低端看高端就是黑魔法。懂的人其实都知道,这不是段子,其实就是程序员的真实写照。想一想,我们日常学习、求职…

WMI技术介绍和应用——查询系统服务

本文使用了《 WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。( 转载请指明出于breaksoftware的csdn博客)本文主要介绍Win32_Service类。 如何使用WMI枚举系统中…

送书 | 2020年新一天,用这本书开启你的NLP学习之路!

本文选自电子工业出版社博文视点新书《大数据智能:数据驱动的自然语言处理技术》。本书作者:清华大学刘知远、薄言RSVP.ai崔安颀、腾讯张开旭、清华大学韩文弢、中国人民大学赵鑫、厦门大学苏劲松、罗格斯大学张永锋、北京大学严睿、哈尔滨工业大学&…

如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果

最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。今天花点时间,将该方法整理成文。&#xff…

Ruby环境的安装(In Ubuntu 7.10)

今天开始学习Ruby。准备的图书呢,就是《Programming Ruby - 2nd》。为了准备一个实验的环境,于是要给我的Ubuntu上安装Ruby的环境。1、安装解释器:sudo apt-get install ruby 2、安装一个即时执行工具irb:由于第一部安装的结果…

基于animation.css实现动画旋转特效

分享一款基于animation.css实现动画旋转特效。这是一款基于CSS3实现的酷炫的动画旋转特效代码。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <div class"wrap"><div class"mod_bg"><div class"bg…

VC:CString用法整理(转载)

1.CString::IsEmpty BOOL IsEmpty( ) const; 返回值&#xff1a;如果CString 对象的长度为0&#xff0c;则返回非零值&#xff1b;否则返回0。 说明&#xff1a;此成员函数用来测试一个CString 对象是否是空的。 示例&#xff1a; 下面的例子说明了如何使用CString::IsEmp…

WMI技术介绍和应用——查询本地用户和组

本文使用了《 WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句&#xff0c;具体使用参看前面的例子。&#xff08; 转载请指明出于breaksoftware的csdn博客&#xff09;本文主要介绍Win32_Group和Win32_UserAccount类。 如何…

AAAI 2020 | 时间可以是二维的吗?基于二维时间图的视频内容片段检测

作者 | 彭厚文、傅建龙来源 | 微软研究院AI头条编者按&#xff1a;当时间从一维走向二维&#xff0c;时序信息处理问题中一种全新的建模思路由此产生。根据这种新思路及其产生的二维时间图概念&#xff0c;微软亚洲研究院提出一种新的解决时间定位问题的通用方法&#xff1a;二…

UITextField的代理方法

- (void)textFieldDidBeginEditing:(UITextField *)textField 当textField开始编辑的时候调用&#xff0c;可用完成如下的需求&#xff1a;点击textField可以使页面往上滑动 必须加上这句代码 [UIView animateWithDuration:.25 animations:^{ _scrollView.contentOffset CGPo…

以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题

随着物质生活的丰富&#xff0c;人们的精神生活也越来越丰富。人们闲暇的时间也相对变多&#xff0c;于是很多人就开始寻找打发时间的方法。其中电视便是其中一种非常重要的消遣方式。假如我们打开电视机&#xff0c;看到了一个电视台正在播一部我们之前没看过的&#xff0c;正…

知识图谱,下一代数据中台的核心技术

作者 | 杨威&#xff0c;明略科技技术中心负责人 编辑 | 夕颜 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 本文为CSDN即将推出的《新战场&#xff1a;决胜中台》专刊的第 3 篇文章。 【导读】数据中台火的十分突然&#xff0c;似乎年前还在炒概念&#xff0c;年…

StoneAge Dict 技术方案的可行性[1]

上次和项目经理讨论了技术选型的事&#xff0c;现在简单地说一下&#xff0c;等下次开会再系统地讲。1. 平台环境&#xff1a;Java1.52. 用户接口&#xff1a;Web: JSP, JSFSpring2.5xDesktop: JavaFX3. 技术&#xff1a;dictzip(解析StarDict词库), XML因为StarDict是目前很受…

using的几种用途

using 常用来引用命名空间 1 using System; 2 using System.Data; 3 using System.Data.SqlClient; 4 using System.Collections.Generic; 5 using Model; 6 using IDAL; 7 using DBUnititly; using另一个用途是给类和命名空间指定别名 1 using spacename system.io2 3 using…

以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析

按照软件的执行流程&#xff0c;我们首先遇到《以金山界面库&#xff08;openkui&#xff09;为例思考和分析界面库的设计和实现——问题》中提出的最后一个问题&#xff1a;界面描述文件的放置位置。我们曾提出一种方案&#xff1a;将界面描述文件打包后放在资源文件中&#x…

开发者如何赶上5G风口?

随着5G正式步入商用&#xff0c;5G 技术引发广泛关注。据信息通信研究院《5G经济社会影响白皮书》预测&#xff0c;2030年&#xff0c;5G将直接带动的总产出、经济增加值、就业机会分别为6.3万亿元、2.9万亿元和800万个。据BOSS直聘 《2019年5G相关人才数据观察》报告指出&…