第二十章开发delphi对象式数据管理功能四内容摘要:
的实现。 它们在 TReader 中的实现如下: procedure (const Name: string。 ReadData: TReaderProc。 WriteData: TWriterProc。 HasData: Boolean)。 begin if CompareText(Name, FPropName) = 0 then begin ReadData(Self)。 FPropName := 39。 39。 end。 end。 procedure (const Name: string。 ReadData, WriteData: TStreamProc。 HasData: Boolean)。 var Stream: TMemoryStream。 Count: Longint。 begin if CompareText(Name, FPropName) = 0 then begin if ReadValue vaBinary then begin Dec(FBufPos)。 SkipValue。 FCanHandleExcepts := True。 PropValueError。 end。 Stream :=。 try Read(Count, SizeOf(Count))。 (Count)。 Read(^, Count)。 FCanHandleExcepts := True。 ReadData(Stream)。 finally。 end。 FPropName := 39。 39。 end。 end。 在两个方法都将 Name 参数值与当前的属性名比较,如果相同则进行读操作。 在 DefineBinaryproperty 中,创建了一个内存流。 先将数据读到内存流中然后调用 ReadData 读取数据。 3. FlushBuffer 的实现 FlushBuffer 方法用于清除 Reader 对象的内部缓冲区中的内容,保持Reader 对象和流在位置( Position)上的同步,其实现如下: procedure。 begin := (FBufEnd FBufPos)。 FBufPos := 0。 FBufEnd := 0。 end。 4. ReadListBegin、 ReadListEnd 和 EndOfList 方法 这三个方法都是用于从 Reader 对象的流中读取一连串的项目,并且这些项目都由 WriteListBegin 写入的标志标定开始和 WriteListEnd 写入标志,标定结束,在读循环中用 EndOfList 进行判断。 它们是在 Reader 对象读取流中数据时经常用于的。 它们的实现如下: procedure。 begin CheckValue(vaList)。 end。 procedure。 begin CheckValue(vaNull)。 end。 function : Boolean。 begin Result := ReadValue = vaNull。 Dec(FBufPos)。 end。 项目表开始标志是 VaList,项目表结束标志是 VaNull, VaList 和 VaNull 都是枚举类型 TValueType 定义的常量。 它们实现中调用的 CheckValue 是 TReader 的私有方法,其实现如下: procedure (Value: TValueType)。 begin if ReadValue Value then begin Dec(FBufPos)。 SkipValue。 PropValueError。 end。 end。 CheckValue 方法的功能是检测紧接着要读的值是否是 Value 指定 的类型。 如果不是则跳过该项目并触发一个 SInvalidPropertyValue 错误。 EndOfList 函数只是简单地判断下一字节是否是 VaNull 将判断结果返回,并将字节移回原来位置。 5. 简单数据类型读方法的实现 简单数据类型指的是布尔型、字符型、整型、字符串型、浮点型、集合类型和标识符。 将它们放在一起介绍是因为它们的实现方法类似。 因为它们的实现都用到了 ReadValue 方法,因此先来介绍 ReadValue 方法的实现: function : TValueType。 begin Read(Result, SizeOf(Result))。 end。 该方法调用私有方法 Read,从 Reader 对象流中读一个字节,并移动位置指针。 ReadValue 方法专门从流中读取值的类型的,所有的数据读写方法中在读取数据前都要调用 ReadValue 方法判断是否是所要读的数据。 如果是,则调用Read 方法读取数据;否则触发一个异常事件,下面看 Integer 类型的读方法: function : Longint。 var S: Shortint。 I: Smallint。 begin case ReadValue of vaInt8: begin Read(S, SizeOf(Shortint))。 Result := S。 end。 vaInt16: begin Read(I, SizeOf(I))。 Result := I。 end。 vaInt32: Read(Result, SizeOf(Result))。 else PropValueError。 end。 end。 因为 Delphi 中,整型可分 8 位 、 16 位和 32 位,因此读取整型数据时分别作了判断。 布尔类型的数据是直接放在值类型标志上,如果类型为 VaTrue,则值为True;如果类型为 VaFalse,则值为 False。 function : Boolean。 begin Result := ReadValue = vaTrue。 end。 ReadString 方法也利用 ReadValue 方法判断是字符串还是长字符串。 function : string。 var L: Integer。 begin L := 0。 case ReadValue of vaString: Read(L, SizeOf(Byte))。 vaLString: Read(L, SizeOf(Integer))。 else PropValueError。 end。 SetString(Result, PChar(nil), L)。 Read(Pointer(Result)^, L)。 end。 如果 VaString 类型紧接着一个字节存有字符串的长度;如果是 VaLString 类,则紧接着两 个字节存放字符串长度,然后根据字符串长度用 SetString 过程给分配空间,用 Read 方法读出数据。 ReadFloat 方法允许将整型值转换为浮点型。 function : Extended。 begin if ReadValue = vaExtended then Read(Result, SizeOf(Result)) else begin Dec(FBufPos)。 Result := ReadInteger。 end。 end。 字符类型数据设有直接的标 志,它是根据 VaString 后面放一个序值为 1 的字节来判断的。 function : Char。 begin CheckValue(vaString)。 Read(Result, 1)。 if Ord(Result) 1 then begin Dec(FBufPos)。 ReadStr。 P。第二十章开发delphi对象式数据管理功能四
相关推荐
利用卵磷脂溶解于乙醇,然后采用层析技术进一步充分除去卵磷脂浓缩液中残留的油脂和脂肪酸,最后利用超滤技术将卵磷脂浓缩液中的其它成分加以分离和 提纯 孙其昌 04675999123 13946810399 10 黑龙江乌苏里江制药有限公司 刺五加注射液脱色技术。 我公司生产的刺五加注射液为橙黄色澄明液体,色素为中药杂质之一,刺五加注射液标准以前是棕色澄明液体,现在是橙黄色澄明液体
个具体的方法时,就不能使用其他方法去完成任务。 25. 可逆的动作 如果出现不允许的动作后,裁判恢复(取消)这个动作,这对 分数没有影响,然后裁判会提醒你这个动作是不允许的。 注意允许机器人出错,搞乱场地等,但是这些动作是不能恢复的。 26. 机器人损坏 在比赛过程中,因为不是故意地让机器人部件掉落而导致机器人损坏,你可以恢复机器人。 你可以自己取回也可以请求裁判帮助。 27. 场地损坏
单项选择题 1. C 三、 多项选择题 四、 判断且改错。 应改为: 在现代中央银行制度中,集中存款准备金虽然仍是保证银行支付的重要内容,但更多地,它已作为中央银行调控货币供应量和社会信用量的手段而采用。 应改为: 德国联邦银行是独立性较强的中央银行,而法兰西银行是独立性较弱的中央银行。 应改为: 中央银行的独立性比较集中地反映在中央银行与政府的关系上,由于各国的国情与历史传统不同
是非可视化的。 但可以借助于静态 DFM文件的可视化设计。 这就是生成和使用动态 DFM 文件的第二种方法。 也就是在应用程序运行前,在 Delphi 开发环境中,使用可视化开发工具设计所需窗口或部件的样式,以 DFM 文件保存。 然后在应用程序运行过程中,将 DFM 文件读入内存。 Delphi 的 Stream 对象和 Filer 对象在读取 DFM 文件时,会根据
Longint。 var Pos: Longint。 begin Pos := Seek(0, 1)。 Result := Seek(0, 2)。 Seek(Pos, 0)。 end。 2. TStream 方法的实现 ⑴ CopyFrom 方法 CopyFrom 是 Stream 对象中很有用的方法,它用于在不同存储媒介中拷贝数据。 例如,内存与外部文件 之间、内存与数据库字段之间等。
+、葡萄糖等物质进入该细胞是采用 方式,而 O CO2 等则通过 方式进出细胞。 29. 1958 年美国科学家从胡萝卜韧皮部中取出一些细胞进行培养,最终获得了完整的新植株,请根据下面实验过程示意图分析回答: ( 1)过程 ① 在生物技术中称为 ,由单个细胞形成细胞团需要经过 过程。 ( 2)过程 ② 由细胞团形成胚状体要经过 过程,其结果是。 5 第二单元《生命的基本单位 —— 细胞》测试卷(