Какой стандарт использует BDE для файлов схемы .sch? - PullRequest
2 голосов
/ 04 мая 2009

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

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

Пример 1 - файл формата VARYING

CUSTOMER.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 - Фиксированный файл формата

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

Меня особенно интересуют возможные значения аргументов для «Тип файла», «Разделитель», «Разделитель» и «CharSet». Я искал в Интернете различные термины («RFC», «схема», «тип файла», «стандарт» и т. Д.), Но ничего не нашел ...

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

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

ТИА

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

Ответы [ 2 ]

2 голосов
/ 05 мая 2009

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

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

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

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

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

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

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

Как мне указать непечатаемые Символы-разделители и разделители, например, управляющий персонаж Анси например, «Разделитель единиц» ($ 1F) или даже простая «вкладка» ($ 09)? (Учитывая возраст формат, я думаю, я должен использовать карет нотации, но это было бы просто конечно.)

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

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

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

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

[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL
0 голосов
/ 04 мая 2009

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

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

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

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

Держись: -)

Редактировать 1 : дополнительная информация

Поддержка ASCII есть в idasci32.dll

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

Filetype:

  • Исправлено
  • С разделителями

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

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

CharSet:

  • 1038 * ASCII *
...