档案解析器要求

【勇芳软件工作室】汉化HomePreviousNext

每个文件解析器必须实现以下功能。

VwStreamCloseFuncVwStreamSectionFunc
VwStreamOpenFuncVwStreamSeekFunc
VwStreamReadFuncVwStreamTellFunc
VwStreamReadRecordFunc 

显示引擎调用这些功能来显示文件解析器支持的类型的文件。

显示引擎通过调用VwStreamOpenFunc启动文件查看过程,将文件的名称发送到文件解析器。任何解析器的第一个责任是验证给定的文件是否具有正确的格式并可以被处理。如果该文件是可见的,则文件解析器将返回一个值,以确认该请求。

解析器完成验证后,显示引擎将调用VwStreamSectionFunc,指示文件解析器识别要处理的文件的第一部分的类型和名称。A 【部分】是文件的一部分,其中所有数据都是一种类型;它构成了处理文件的逻辑断点。标准部分类型是字处理,电子表格,数据库,位图图形和矢量图形。文件可以由单个部分组成,同一类型的多个部分或不同类型的部分的组合。显示引擎显示文件所需的操作取决于当前正在处理的部分的类型。文件解析器必须调用SOPutSectionTypeSOPutSectionName函数来输出段类型并设置段名称。

在文件解析器从VwStreamSectionFunc返回之前,可能需要向显示引擎提供其他信息。如果要处理的部分是字处理部分,则文件解析器必须使用SOPutFontTableEntry功能为字体表设置条目。如果是电子表格部分,则文件解析器必须通过调用SOPutColumnInfo函数来设置列宽。如果是数据库部分,则文件解析器必须通过调用SOPutFieldInfo函数设置字段格式。文件解析器还可以使用电子表格和数据库使用SOSetDateBase函数来计算日期。此外,文件解析器可以通过调用SOPutHdrEntry函数来设置标题条目。

在设置了部分类型和一般信息之后,显示引擎通过调用VwStreamReadFunc来请求该部分的数据。文件解析器通过调用流输出功能来满足此请求。这些功能以最简单的方式将数据传递给显示引擎,以便引擎显示,复制到剪贴板或写入磁盘。

文件解析器使用的流输出功能取决于节类型。对于文字处理部分,文件解析器使用SOPutParaSpacingSOPutCharAttrSOPutChar功能设置段落的间距,设置字符的样式属性和输出字符。对于电子表格部分,解析器使用SOPutDataCellSOPutTextCell函数输出单元格的内容(数据或文本)。对于数据库部分,它使用SOPutFieldSOPutVarField函数来输出字段的数据。解析器使用位图图形部分的SOPutBitmapHeaderSOPutScanLineData函数,矢量图形部分使用SOVectorAttrSOVectorObject函数。

要为段落,单元格或字段设置中断,文件解析器调用SOPutBreak函数,其值为SO_PARABREAK,SO_CELLBREAK或SO_RECORDBREAK。来自SOPutBreak的返回值告诉文件解析器如何继续。如果是SO_STOP值,则文件解析器将停止所有处理并从VwStreamReadFunc返回。

文件解析器继续输出数据,直到它到达该段的末尾。解析器必须通过使用SO_SECTIONBREAK值调用SOPutBreak来结束部分。如果这是文件中的最后一部分,则文件解析器将通过使用SO_EOFBREAK值来指示文件的结尾已达到。

如果文件中有以下部分,显示引擎再次调用VwStreamSectionFunc以请求下一部分的类型和名称,并且处理继续,就像第一部分一样。

在最后一部分之后,显示引擎调用VwStreamCloseFunc来指示处理完成,并且不会再进行数据请求。文件解析器必须关闭文件及其已打开的任何相关文件,并清理资源,如释放内存。

如果在解析文件时发生错误,则文件解析器应调用SOBailOut函数来通知显示引擎的错误状况。调用SOBailOut函数后,解析器必须立即从VwStreamReadFunc返回。