2

我想知道 - BDE 使用的 .sch 模式文件格式是否有标准(如 RFC)?

格式在此处此处进行了描述。它似乎基于这种微软格式,但并不完全相同。

示例 1 - VARYING 格式文件

客户.SCH:

[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ascii
Field1=Customer No,Float,20,04,00
Field2=Name,Char,30,00,20
Field3=Phone,Char,15,00,145
Field4=First Contact,Date,11,00,160

客户.TXT:

1221.0000,"Kauai Dive Shoppe","808-555-0269",04/03/1994
1231.0000,"Unisco","809-555-3915",02/28/1994
1351.0000,"Sight Diver","357-6-876708",04/12/1994
1354.0000,"Cayman Divers World Unlimited","809-555-8576",04/17/1994
1356.0000,"Tom Sawyer Diving Centre","809-555-7281",04/20/1994

示例 2 - FIXED 格式文件

客户.SCH:

[CUSTOMER]
Filetype=Fixed
CharSet=ascii
Field1=Customer No,Float,20,04,00
Field2=Name,Char,30,00,20
Field3=Phone,Char,15,00,145
Field4=First Contact,Date,08,00,160

客户.TXT:

           1221.0000Kauai Dive Shoppe             808-555-0269   04/03/94
           1231.0000Unisco                        809-555-3915   02/28/94
           1351.0000Sight Diver                   357-6-876708   04/12/94
           1354.0000Cayman Divers World Unlimited 809-555-8576   04/17/94
           1356.0000Tom Sawyer Diving Centre      809-555-7281   04/20/94

我对“文件类型”、“分隔符”、“分隔符”和“字符集”可能的参数值特别感兴趣。我已经使用各种术语(“RFC”、“模式”、“文件类型”、“标准”等)搜索了互联网,但结果一片空白……

我特别想知道的事情:

  • .sch 文件本身可以使用哪些编码?(这与正确解释字段名和其他可配置字符有关。)
  • 我应该如何指定不可打印的分隔符和分隔符,例如像“单位分隔符”($1F)这样的 Ansi 控制字符,甚至是简单的“制表符”($09)?(考虑到格式的年龄,我认为我应该使用插入符号,但它只是想确定。)
  • 如何指定不使用分隔符?我应该指定一个空值,还是完全保留设置?

TIA

PS:注意,我没有使用 BDE 本身——我必须正确生成和读取这些模式文件。

4

2 回答 2

2

在您的硬盘驱动器中搜索一个名为 bde32.hlp 的文件,该文件与 Borland Delphi 一起安装。它是一个包含 BDE API 文档的 Windows 帮助文件。它还包含一个标题为“将外部模式绑定到文本表”的主题,该主题描述了 *.sch 文件的格式。

在标题“语言驱动程序”下,相同的帮助文件还包含可以为CharSet*.sch 文件中的条目指定的“短名称”列表。

因此,例如,如果您想将 Windows 字符集用于西欧语言 (Windows-1252),您将需要法语重音字符或德语元音变音符号,使用的值CharSet如下ANSIINTL

[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ANSIINTL

.sch 文件本身可以使用哪些编码?(这与正确解释字段名和其他可配置字符有关。)

只是普通的ASCII。除了具有 0-127 字符代码的良好旧 ASCII 字符之外,没有任何场景需要或允许您使用任何东西,其中(除了用于分隔不同行的换行符)只有可打印字符才有意义。

例如,表名或列名中不允许使用其他字符(变音符号、重音字符等)。

我应该如何指定不可打印的分隔符和分隔符,例如像“单位分隔符”($1F)这样的 Ansi 控制字符,甚至是简单的“制表符”($09)?(考虑到格式的年龄,我认为我应该使用插入符号,但它只是想确定。)

不可能。只有“可见”字符可以用作分隔符和分隔符。要使用选项卡,只需使用空分配:

[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=
CharSet=ANSIINTL

如何指定不使用分隔符?我应该指定一个空值,还是完全保留设置?

在“固定”格式中,不使用分隔符和定界符。在“变化”格式中,分隔符始终用于字符串/字符类型的列,而分隔符从不用于其他列类型。要不使用分隔符,只需在模式中使用空分配:

[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL
于 2009-05-04T20:53:51.477 回答
0

你的问题很难得到明确的答案。BDE 已被弃用多年,大多数最初的开发人员已经转向其他工作。

如果我没记错的话,BDE 的文本(后来的 ASCII)支持在它第一次被称为 ODAPI 和后来的IDAPI(独立数据库 API,90 年代早期 Borland、Novell、IBM 和 WordPerfect 的共同开发)时就已经存在了。

与此同时,Borland 成为 Inprise,将重心转移到企业市场,再次成为 Borland,将开发工具和数据库组分离到 CodeGear,并将 CodeGear 出售给 Embarcadero(最终再次以开发人员为中心)。

稍后我将尝试提出一些体面的东西并扩展此答案,或者在DelphiLive 处询问!下周。

不挂断 :-)

编辑1:更多信息

idasci32.dll 支持 ASCII

这些字段的值:

文件类型:

  • 固定的
  • 分隔的

分隔符:未知

分隔符:未知

字符集:

  • ASCII
于 2009-05-04T12:45:10.433 回答