【问题标题】:What standard does BDE use for .sch schema files?BDE 对 .sch 模式文件使用什么标准?
【发布时间】:2009-05-04 09:42:27
【问题描述】:

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

格式描述为herehere。好像是基于this Microsoft format,但又不太一样。

示例 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

CUSTOMER.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

CUSTOMER.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 本身 - 我必须正确生成和读取这些架构文件。

【问题讨论】:

    标签: delphi schema file-format bde


    【解决方案1】:

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

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

    因此,例如,如果您想为西欧语言 (Windows-1252) 使用 Windows 字符集,您将需要法语重音字符或德语变音符号,则用于 CharSet 的值是 @987654323 @这样的:

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

    哪些编码可用于 .sch 文件本身? (这是相关的 用于正确解释 字段名和其他可配置的 字符。)

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

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

    我应该如何指定不可打印 分隔符和定界符, 例如 Ansi 控制字符 像“单元分隔符”($ 1F)甚至是 简单的“标签”(09 美元)? (鉴于年龄 我认为我应该使用 Caret 的格式 符号,但它只是想成为 当然。)

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

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

    如何指定不使用 分隔符?我应该指定一个空的 值,或离开设置 全部?

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

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

    【讨论】:

    • 谢谢,您对“语言驱动程序”主题的引用回答了我关于“字符集”设置的问题。我找不到有关指定其他设置的详细信息...
    • BDE32.hlp 中的帮助主题为官方文档。没有比这更详细的了。我认为,这非常直接且不言自明。什么问题还不清楚?
    • 我在上面的文字中添加了更具体的问题。
    • 我试图回答你的问题。请记住,BDE 是一项非常古老的技术。
    【解决方案2】:

    你的问题很难得到明确的答案。 BDE 已被弃用多年,大多数原始开发人员已转行。

    如果我没记错的话,BDE 的文本(后来的 ASCII)支持在它第一次被称为 ODAPI 和后来的 IDAPI(独立数据库 API,Borland、Novell、IBM 和 WordPerfect 在90 年代初)。

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

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

    等一下 :-)

    编辑 1:更多信息

    在 idasci32.dll 中支持 ASCII

    这些字段的值:

    文件类型:

    • 已修复
    • 分隔

    分隔符:未知

    分隔符:未知

    字符集:

    • ascii

    【讨论】:

    • 我在 BDE32.hlp 中没有看到 Filetype 值“Delimited”(只有“FIXED”和“VARYING”)——你有这个来源吗?
    • 当指定“固定”以外的任何内容时,系统将使用“变化”。
    • 是的,当使用 TBatchMove 导出时,您将获得 Delimited(至少在 Delphi 2007 中,但我认为这至少可以追溯到 Delphi 5)。我正在进行更多测试,但还需要为 DelphiLive 打包!所以我可能需要至少几天的时间才能进一步编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多