b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(93)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

var DataFile: file;

对无类型文件,Reset和Rewrite过程允许你使用额外的参数来指定传输数据时记录的大小。因为历史原因,默认的记录大小是128字节。只有记录的大小为1时,才能正确反映任何文件的实际大小。

除了Read和Write,所有作用于类型文件的过程和函数也能用于无类型文件。代替Read和Write,BlockRead和BlockWrite两个过程用于高速数据传输。

Text-file device drivers(文本文件设备驱动)

Text-file device drivers: Overview(概述)

你可以为程序定义自己的文本文件设备驱动。文本文件设备驱动由4个函数组成,它们完全实现了Object Pascal文件系统和一些设备间的接口。

这4个函数每一个定义一个设备驱动,它们是Open、InOut、Flush和Close。每个函数的声明(函数头)都是

function DeviceFunc(var F: TTextRec): Integer;

这里,DeviceFunc是函数的名称(也就是Open、InOut、Flush或Close)。设备接口函数的返回值变成IOResult的返回值。若返回值是0,则操作成功。

要把设备接口函数和指定的文件相关联,你必须写一个定制的Assign过程。Assign过程必须把4个设备接口函数的地址赋给文本文件变量的的4个函数指针;并且,它必须在Mode字段存储fmClosed“魔术”常量,在BufSize字段存储文本文件缓冲区的大小,在BufPtr字段存储指向文本文件缓冲区的指针,并且把Name字段清除。

比如,假设4个设备接口函数叫做DevOpen、DevInOut、DevFlush和DevClose,Assign过程应该看起来这样:

procedure AssignDev(var F: Text);

begin

with TTextRec(F) do

begin

Mode := fmClosed; //“魔术”常量

- 125 -

Standard routines and I/O

BufSize := SizeOf(Buffer);

BufPtr := @Buffer;

OpenFunc := @DevOpen; // 缓冲区大小 // 缓冲区地址 // 把4个设备接口函数的地址赋给相应字段

InOutFunc := @DevInOut;

FlushFunc := @DevFlush;

CloseFunc := @DevClose;

Name[0] := #0;// 把Name清除

end;

end;

设备接口函数能使用文件记录(file record)中的UserData字段存储私有信息,在任何时候文件系统都不会修改这个字段。

Device functions(设备函数)

组成文本文件设备驱动的函数如下所述。

Open(打开)函数:

Open函数被Reset、Rewrite和Append标准过程调用,用来打开一个和设备关联的文本文件。在入口,Mode字段包含fmInput、fmOutput或fmInOut来指示Open函数是否被Reset、Rewrite或Append调用。 Open函数根据Mode值来准备文件是被输入或输出。若指定了fmInOut(表示Open函数被Append调用),在Open函数返回前,它必须被改为fmOutput。

Open总是在其它设备接口函数之前被调用,因为这个原因,AssignDev只是初始化OpenFunc字段,把其余的工作(给字段赋函数地址)留给Open函数。基于Mode值,Open能设置输入或输出目的的(函数)指针。通过判断当前的状态,可以省却InOut、Flush函数和CloseFile过程。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-93.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 细悟
      细悟

      正解

    • 堀绚子
      堀绚子

      当然不会专注于武器装备的探讨

    • 赵超
      赵超

      搞不懂他们连鉴定对象是谁都不知道还要鉴定什么

    热点图片
    拼命载入中...