Какой стандарт использует BDE для файлов схемы .sch?
-
03-07-2019 - |
Вопрос
Мне было интересно - существует ли стандарт (например, 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 - код