使用delphi的键入文件文件创建数据库

简单地说,文件是某种类型的二进制序列。在Delphi中,有三类文件:类型化、文本和非类型化。类型化文件是包含特定类型数据的文件,例如双精度、整数或以前定义的自定义记录类型。文本文件包含可读的ASCII字符。当我们想要对文件施加尽可能少的结构时,使用非类型化文件。...

简单地说,文件是某种类型的二进制序列。在Delphi中,有三类文件:类型化、文本和非类型化。类型化文件是包含特定类型数据的文件,例如双精度、整数或以前定义的自定义记录类型。文本文件包含可读的ASCII字符。当我们想要对文件施加尽可能少的结构时,使用非类型化文件。

Man sitting in front of computer screen at night

键入的文件

文本文件由以CR/LF(#13#10)组合结尾的行组成,而类型化文件则由取自特定类型数据结构的数据组成。

例如,下面的声明创建了一个名为TMember的记录类型和一个TMember记录变量数组。

type TMember = record Name : string[50];     eMail : string[30];     Posts : LongInt;    end;   var Members : array[1..50] of TMember;

在将信息写入磁盘之前,我们必须声明一个文件类型的变量。下面的代码行声明了一个F文件变量。

var F : file of TMember;

注意:要在Delphi中创建类型化文件,我们使用以下语法:

var SomeTypedFile:SomeType的文件

文件的基类型(SomeType)可以是标量类型(如Double)、数组类型或记录类型。它不应该是长字符串、动态数组、类、对象或指针。

要开始使用Delphi中的文件,我们必须将磁盘上的文件链接到程序中的文件变量。要创建此链接,我们必须使用AssignFile过程将磁盘上的文件与文件变量相关联。

AssignFile(F, 'Members.dat')

一旦建立了与外部文件的关联,必须“打开”文件变量F,以准备读取和写入。我们调用重置过程来打开现有文件,或者调用重写来创建新文件。当程序完成处理文件时,必须使用CloseFile过程关闭该文件。关闭文件后,将更新其关联的外部文件。然后,文件变量可以与另一个外部文件关联。

一般来说,我们应该始终使用异常处理;使用文件时可能会出现许多错误。例如:如果我们为一个已经关闭的文件调用CloseFile,Delphi会报告一个I/O错误。另一方面,如果我们试图关闭一个文件,但尚未调用AssignFile,则结果是不可预测的。

写入文件

假设我们用Delphi成员的姓名、电子邮件和帖子数量填充了一个数组,并希望将这些信息存储在磁盘上的一个文件中。以下代码将完成此工作:

var F : file of TMember;   i : integer; begin AssignFile(F,'members.dat') ; Rewrite(F) ; try for j:= 1 to 50 do Write (F, Members[j]) ; finally CloseFile(F) ; end;end;

从文件中读取

要从“members.dat”文件检索所有信息,我们将使用以下代码:

var Member: TMember F : file of TMember;begin AssignFile(F,'members.dat') ; Reset(F) ; try while not Eof(F) do begin Read (F, Member) ; {DoSomethingWithMember;} end;   finally CloseFile(F) ; end;end;

注意:Eof是结束文件检查功能。我们使用这个函数来确保我们没有试图读取超过文件结尾的内容(超过最后存储的记录)。

寻找和定位

文件通常按顺序访问。当使用标准过程读取或使用标准过程写入读取文件时,当前文件位置将移动到下一个按数字顺序排列的文件组件(下一条记录)。键入的文件也可以通过标准过程Seek随机访问,该过程将当前文件位置移动到指定的组件。FilePos和FileSize函数可用于确定当前文件位置和当前文件大小。

{go back to the beginning - the first record} Seek(F, 0) ; {go to the 5-th record} Seek(F, 5) ; {Jump to the end - "after" the last record} Seek(F, FileSize(F)) ;

更改和更新

您刚刚学会了如何编写和读取整个成员数组,但如果您只想查找第10个成员并更改电子邮件,该怎么办?下一个过程正是这样做的:

procedure ChangeEMail(const RecN : integer; const NewEMail : string) ;var DummyMember : TMember;begin {assign, open, exception handling block} Seek(F, RecN) ; Read(F, DummyMember) ; DummyMember.Email := NewEMail; {read moves to the next record, we have to  go back to the original record, then write} Seek(F, RecN) ; Write(F, DummyMember) ; {close file}end;

任务完成

就这样,现在你有了完成任务所需的一切。您可以将成员的信息写入磁盘,也可以将其读回,甚至可以更改文件“中间”的一些数据(例如电子邮件)。

重要的是,此文件不是ASCII文件,这是它在记事本中的外观(只有一条记录):

.Delphi Guide g Ò5·¿ì. 5. . B V.Lƒ ,„¨[email protected]Ï.. ç.ç.ï..

  • 发表于 2021-09-06 15:11
  • 阅读 ( 172 )
  • 分类:IT

你可能感兴趣的文章

linux下如何用gocryptfs加密文件

...于那些数据被曝光的人来说都是坏消息。 由于数百万人使用Dropbox、Google Drive和MicrosoftOneDrive等服务,每天都会将一个看似永无止境的数据流推到云上。如果您将部分(或全部)数据存储在云上,如果出现漏洞,您可以采取什么...

  • 发布于 2021-04-01 18:42
  • 阅读 ( 286 )

用delphi创建、解析和操作xml文档

...HTML那样是固定格式。 将每个XML文件视为一个自包含的数据库。标记——XML文档中的标记,用尖括号隔开——描绘记录和字段。标记之间的文本是数据。用户使用解析器和解析器公开的一组对象执行诸如检索、更新和插入XML数...

  • 发布于 2021-09-06 15:05
  • 阅读 ( 165 )

如何将媒体文件嵌入delphi可执行文件(rc/.res)(embed media files into a delphi executable (rc/.res))

...可能性是无穷无尽的:exe中的HTML、exe中的exe、exe中的空数据库,等等。

  • 发布于 2021-09-06 15:08
  • 阅读 ( 191 )

了解delphi编程的基础知识

...们还将介绍一些最常见逻辑错误的解决方案。 表格和数据库 在几乎每个Delphi应用程序中,我们都使用表单向用户显示和检索信息。Delphi为我们提供了一系列丰富的可视化工具,用于创建表单并确定其属性和行为。我们可以在...

  • 发布于 2021-09-06 15:13
  • 阅读 ( 182 )

理解delphi项目和单元源文件

...含可由所有应用程序表单共享的通用源代码信息。 除非使用包含程序图标和版本信息的Windows资源文件(RES),否则无法编译Delphi项目。它还可能包含其他资源,如图像、表格、光标等。RES文件由Delphi自动生成。 注意:以DPR...

  • 发布于 2021-09-06 15:15
  • 阅读 ( 173 )

德尔福单元剖析(德尔福初学者版)

...为一名优秀的Delphi程序员,那么“接口”、“实现”和“使用”等词需要在您的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一个应用程序或...

  • 发布于 2021-09-10 20:53
  • 阅读 ( 181 )

如何构建没有gui的控制台应用程序(build console applications with no gui)

...程序。 如果您的Delphi版本高于4,那么您所要做的就是使用Console应用程序向导。Delphi5介绍了控制台应用程序向导。您可以通过指向File | New来访问它,这将打开一个新项目对话框-在新页面中选择控制台应用程序。请注意,在Delp...

  • 发布于 2021-09-10 22:34
  • 阅读 ( 250 )

delphi的顺序和枚举数据类型

...的每个值都有一个唯一的后继值,因此在处理顺序类型时使用了几个预定义函数: 作用 影响 作战需求文件(X) 给出元素的索引 Pred(X) 转到类型中X前面列出的元素 成功(X) 转到类型中X后面列出的元素 十二月...

  • 发布于 2021-09-10 23:38
  • 阅读 ( 197 )

用delphi和ado编辑excel表格

...Delphi应用程序传输到Excel。如何创建工作表并使用MS Access数据库中的自定义数据填充工作表。 如何连接到microsoft excel Microsoft Excel是一个功能强大的电子表格计算器和数据分析工具。由于Excel工作表的行和列与数据库表的行和...

  • 发布于 2021-09-11 00:21
  • 阅读 ( 238 )

在delphi应用程序中使用tclientdataset的指南

为您的下一个Delphi应用程序寻找单文件、单用户数据库?需要存储一些特定于应用程序的数据,但不想使用注册表/INI/或其他什么? Delphi提供了一个本地解决方案:TClientDataSet组件——位于组件调色板的“数据访问”选项卡上...

  • 发布于 2021-09-15 03:38
  • 阅读 ( 151 )
c9449379994
c9449379994

0 篇文章

相关推荐