Какой стандарт использует BDE для файлов схемы .sch?

StackOverflow https://stackoverflow.com/questions/819482

Вопрос

Мне было интересно - существует ли стандарт (например, RFC) для формата файла схемы .sch, используемого BDE?

Формат описан здесь и здесь.Кажется, это основано на этот формат Microsoft, но это не совсем одно и то же.

Пример 1 - Файл С ИЗМЕНЯЮЩИМСЯ форматом

КЛИЕНТ.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 - Файл ФИКСИРОВАННОГО формата

КЛИЕНТ.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

Меня особенно интересуют возможные значения аргументов для 'Filetype', 'Delimiter', 'Separator' и 'CharSet'.Я искал в Интернете, используя различные термины ('RFC', 'schema', 'filetype', 'standard' и т.д.), Но ничего не нашел...

Вещи, которые я хотел бы знать конкретно :

  • Какие кодировки могут быть использованы для самого файла .sch?(Это важно для правильной интерпретации имен полей и других настраиваемых символов.)
  • Как я должен указать непечатаемые разделители и разделительные символы, например управляющий символ Ansi, такой как "Разделитель единиц измерения" ($ 1F) или даже простой "Tab" ($ 09)?(Учитывая возраст формата, я думаю, мне следует использовать обозначение курсором, но просто хотелось бы быть уверенным.)
  • Как я могу указать, чтобы разделитель не использовался?Должен ли я указать пустое значение или вообще оставить настройку?

ТИА

PS:Обратите внимание, я не использую сам BDE - это просто эти файлы схемы, которые я должен сгенерировать и правильно прочитать.

Это было полезно?

Решение

Найдите на своем жестком диске файл с именем bde32.hlp, который установлен вместе с Borland Delphi.Это файл справки Windows, который содержит документацию по BDE API.Он также содержит раздел под названием "Привязка внешней схемы к текстовым таблицам", в котором описывается формат файлов *.sch.

Под заголовком "Языковые драйверы" тот же файл справки также содержит список "кратких имен", которые могут быть указаны для CharSet запись в файле *.sch.

Так, например, если вы хотите использовать набор символов Windows для западноевропейских языков (Windows-1252), который вам понадобится для символов с французским ударением или немецких умляутов, значение для CharSet является ANSIINTL вот так:

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

Какие кодировки могут быть использованы для самого файла .sch?(Это важно для правильной интерпретации имен полей и других настраиваемых символов.)

Просто обычный ASCII.Не существует сценария, который требовал бы или позволял бы вам использовать что-либо, кроме старых добрых символов ASCII с кодами символов от 0-127, и из них (за исключением разрывов строк для разделения разных строк) значимыми являются только печатные символы.

Например, никакие другие символы (умляуты, символы с ударением и т.д.) Не допускаются в имени таблицы или именах столбцов.

Как я должен указать непечатаемые Разделители и разделительные символы, например, управляющий символ Ansi например, "Разделитель единиц измерения" ($ 1F) или даже простая "Вкладка" ($ 09)?(Учитывая возраст формата, я думаю, мне следует использовать каретку обозначение, но просто хотелось бы быть уверенным.)

Это невозможно.В качестве разделителя можно использовать только "видимые" символы.Чтобы использовать вкладку, просто используйте пустое назначение:

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

Как я могу указать, чтобы не использовать разделитель ?Должен ли я указать пустое значение или вообще оставить настройку ?

В "Фиксированном" формате разделители не используются.В "Изменяющемся" формате разделитель всегда используется для столбцов со строковым / символьным типом и никогда не используется для других типов столбцов.Чтобы не использовать разделитель, просто используйте пустое присваивание в схеме:

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

Другие советы

Будет действительно трудно получить окончательный ответ на ваш вопрос.BDE устарела уже много лет назад, и большинство первоначальных разработчиков перешли на другую работу.

Если мне не изменяет память, текстовая (позже ASCII) поддержка BDE уже была там, когда она впервые была вызвана ODAPI и позже IDAPI (Независимый API базы данных, разработка Borland, Novell, IBM и WordPerfect в начале 90-х).

Тем временем Borland стала Inprise, перенесла фокус на корпоративный рынок, снова стала Borland, выделила группу инструментов разработчика и баз данных в CodeGear и продала CodeGear компании Embarcadero (которая, наконец, снова стала ориентирована на разработчиков).

Я постараюсь придумать что-нибудь достойное и расширить этот ответ позже, или поспрашивать в Делфилайв! на следующей неделе.

Держись :-)

Правка 1:еще немного информации

Поддержка ASCII находится в idasci32.dll

Значения значений для этих полей:

Тип файла:

  • Исправлено
  • Разделенный

Разделитель:неизвестный

Сепаратор:неизвестный

Кодировка:

  • ascii - код
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top