I was wondering - is there a standard (like a RFC) for the .sch schema file format the BDE uses?
The format is described here and here. It seems based on this Microsoft format, but it's not quite the same.
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
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
I'm especially interested in the possible argument-values for 'Filetype', 'Delimiter', 'Separator' and 'CharSet'. I've searched the internet using various terms ('RFC', 'schema', 'filetype', 'standard', etc), but came up blank...
Things I would like to know specifically :
TIA
PS: Note, I'm not using the BDE itself - it's just these schema files that I have to generate and read correctly.
Search your hard drive for a file called bde32.hlp that is installed with Borland Delphi. It is a Windows Help file that contains a documentation of the BDE API. It also contains a topic titled "Binding external schema to text tables" which describes the format of the *.sch files.
Under the title "Language drivers", the same help file also contains a list of "short names" that can be specified for the CharSet
entry in the *.sch file.
So, for example, if you want to use the Windows character set for west european languages (Windows-1252), that you will need for French accented characters or German umlauts, the value to use for CharSet
is ANSIINTL
like that:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ANSIINTL
What encoding(s) can be used for the .sch file itself? (This is relevant for correctly interpreting the fieldnames and other configurable characters.)
Just plain ASCII. There is no scenario that would require or allow you to use anything but good old ASCII characters with character codes from 0-127 and of those (except for line breaks to separate the different lines) only printable characters are meaningful.
For example, no other characters (umlauts, accented chars, etc) are allowed in the table name or column names.
How should I specify non-printable Separator and Delimiter characters, for example an Ansi control-character like "Unit Separator" ($1F) or even a simple "Tab" ($09)? (Given the age of the format I think I should use Caret notation, but it'd just like to be sure.)
Not possible. Only "visible" characters can be used as delimiter and separator. To use a tab, just use an empty assignment:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=
CharSet=ANSIINTL
How can I specify to not-use a Delimiter? Should I specifiy an empty value, or leave the setting out altogether?
In "Fixed" format, no separators and no delimiters are used. In "Varying" format, a delimiter is always used for columns with string/character type and a delimiter is never used for other column types. To not use a delimiter, just use an empty assignment in the schema:
[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL