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

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

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

BufPos: Cardinal;

BufEnd: Cardinal;

BufPtr: PChar;

OpenFunc: Pointer;

InOutFunc: Pointer;

FlushFunc: Pointer;

CloseFunc: Pointer;

UserData: array[1..32] of Byte;

Name: array[0..259] of Char;

Buffer: TTextBuf;

end;

Handle保存文件的句柄(当文件打开时)。

Mode字段能被赋予下列值之一

const

fmClosed = $D7B0;

fmInput = $D7B1;

fmOutput = $D7B2;

fmInOut = $D7B3;

这里,fmClosed表示文件已经被关闭,fmInput和fmOutput表示打开了(reset)一个文本文件(fmInput)或创建并打开了(rewritten)一个新文本文件(fmOutput),fmInOut表示打开或创建了一个类型或无类型文件。任何其它的值表示文件变量还没有被赋值(因此没有被初始化)。

用户定义的写入例程使用UserData字段来存储数据。

Name字段保存文件名,它是一个以0字符(#0)结尾的字符序列。

对类型文件和无类型文件,RecSize包含记录的长度(字节),Private字段(?)没有使用但是保留的。 对文本文件,BufPtr是指向一个缓冲区的指针,缓冲区的大小由BufSize说明,BufPos是缓冲区中下一个要读写的字符的索引,BufEnd是缓冲区中有效字符的数目。OpenFunc、InOutFunc、FlushFunc和CloseFunc是指向I/O例程的指针,请参考Device functions。Flags决定了换行风格,像下面所示: bit 0 clear(清除0位) LF line breaks(换行)

bit 0 set(设置0位) CRLF line breaks(回车换行)

Flags其它所有的位被保留以备将来使用。请参考DefaultTextLineBreakStyle和SetLineBreakStyle。 Procedural types(过程类型)

过程指针存储为一个指向过程或函数入口点的32位指针;方法指针存储为一个指向方法入口点的32位指针,后面还跟一个指向对象的32位指针。

- 158 -

Memory management

Class types(类类型)

类类型的值存储为一个32位的指针,它指向一个类的实例,我们称它为对象。对象的内部数据结构就象一个记录,它的字段以声明的顺序进行存储,就象一系列连续的变量。对象的字段总是被优化排列,就象未压缩的记录类型。从祖先类继承下来的所有字段存储在新声明的字段之前。

每个对象的前4个字节是一个指针,它指向类的虚方法表(VMT)。每个类有一个虚方法表,而不是每个对象有一个。不同的类类型,不管多么相似,都不会共用VMT。VMT由编译器自动创建,不能由程序直接操纵。指向VMT的指针,是由对象的构造函数自动存储的,也不能由程序直接操纵。

VMT的布局如下表所示。在正偏移方向,VMT包含一个由32位方法指针构成的列表,每个指针对应于类中用户定义的一个虚方法,方法指针的顺序和声明的顺序相一致,每个指针包含相应的虚方法的入口地址。这种布局和C++的虚表(v-table)以及COM兼容。在负偏移方向,

完成Object Pascal的内部实现。应用程序应该使用Tobject定义的方法来查询这一信息,


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

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

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