BDEは.schスキーマファイルにどの標準を使用しますか?
-
03-07-2019 - |
質問
私は疑問に思っていました-BDEが使用する.schスキーマファイル形式の標準(RFCなど)はありますか?
フォーマットについては、こちらおよびこちら。 このMicrosoft形式に基づいているようですが、まったく同じではありません。
例1-さまざまな形式のファイル
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
「Filetype」、「Delimiter」、「Separator」、および「CharSet」の可能な引数値に特に興味があります。 さまざまな用語(「RFC」、「スキーマ」、「ファイルタイプ」、「標準」など)を使用してインターネットを検索しましたが、空白になりました...
具体的に知りたいこと:
- .schファイル自体に使用できるエンコーディングは何ですか? (これは、フィールド名およびその他の構成可能な文字を正しく解釈するために関連しています。)
- 印刷不可の区切り文字と区切り文字、たとえば「ユニット区切り」などのAnsi制御文字を指定するにはどうすればよいですか。 ($ 1F)または単純な「タブ」さえも($ 09)? (フォーマットの年齢を考えると、キャレット表記を使用する必要があると思いますが、確認したいだけです。)
- デリミタを使用しないように指定するにはどうすればよいですか?空の値を指定するか、設定を完全に省くべきですか?
TIA
PS:注、私はBDE自体を使用していないことに注意してください。正しく生成し、読み取る必要があるのはこれらのスキーマファイルだけです。
解決
Borland Delphiとともにインストールされるbde32.hlpというファイルをハードドライブで検索します。これは、BDE APIのドキュメントを含むWindowsヘルプファイルです。また、「外部スキーマをテキストテーブルにバインドする」というタイトルのトピックも含まれています。 * .schファイルの形式について説明しています。
「Language drivers」というタイトルの下で、同じヘルプファイルには「短い名前」のリストも含まれています。 * .schファイルの CharSet
エントリに指定できます。
したがって、たとえば、西ヨーロッパ言語(Windows-1252)にWindows文字セットを使用する場合、フランス語のアクセント記号付き文字またはドイツ語のウムラウトに必要になり、 CharSet
は ANSIINTL
のようなものです:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ANSIINTL
に使用できるエンコーディング .schファイル自体? (これは関連しています を正しく解釈するために フィールド名およびその他の構成可能 文字)。
単なるASCII。 0-127の文字コードを持つ古き良きASCII文字(異なる行を区切る改行を除く)以外は何も使用することを要求または許可するシナリオはありません。印刷可能な文字のみが意味があります。
たとえば、テーブル名または列名に他の文字(ウムラウト、アクセント付き文字など)は使用できません。
印刷不可を指定する方法 区切り文字と区切り文字、 たとえば、Ansi制御文字 「ユニット区切り記号」など($ 1F)または シンプルな「タブ」 ($ 09)? (年齢を考えると Caretを使用すべきだと思う形式 表記法ですが、それはちょうどしたいです 確認してください。)
できません。 「表示」のみ文字は、区切り文字および区切り文字として使用できます。タブを使用するには、空の割り当てを使用します。
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=
CharSet=ANSIINTL
使用しないように指定するにはどうすればよいですか? デリミタ?空を指定する必要があります 値、または設定を省略します 全部ですか?
" Fixed"で形式、区切り文字および区切り文字は使用されません。 「変化する」形式では、区切り文字は常に文字列/文字型の列に使用され、区切り文字は他の列型には使用されません。区切り文字を使用しないようにするには、スキーマで空の割り当てを使用します。
[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL
他のヒント
あなたの質問に対する決定的な答えを得るのは本当に難しいでしょう。 BDEはもう何年も廃止されており、元の開発者のほとんどは他の仕事に移っています。
メモリが正しく機能する場合、最初にODAPIと呼ばれ、後に IDAPI (90年代前半の独立したデータベースAPI、Borland、Novell、IBM、WordPerfectのコード開発)。
その間、BorlandはInpriseになり、フォーカスをエンタープライズ市場に移し、再びBorlandになり、開発者ツールとデータベースグループをCodeGearに分離し、CodeGearをEmbarcaderoに売却しました(最終的に再び開発者中心になりました)。
まともな何かを思いついてこの回答を後ほど拡張するか、 DelphiLive!で尋ねてみます。来週。
しばらくお待ちください:-)
編集1 :詳細情報
ASCIIのサポートはidasci32.dllにあります
これらのフィールドの値:
ファイルタイプ:
- 修正済み
- 区切り
区切り文字:不明
セパレータ:不明
CharSet:
- ascii