2

私は疑問に思っていました-BDEが使用する.schスキーマファイル形式の標準(RFCのような)はありますか?

フォーマットはここここで説明されています。この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-FIXEDフォーマットファイル

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ファイル自体に使用できるエンコーディングは何ですか?(これは、フィールド名およびその他の構成可能な文字を正しく解釈するために関連します。)
  • 印刷できない区切り文字と区切り文字をどのように指定すればよいですか。たとえば、「Unit Separator」($ 1F)や単純な「Tab」($ 09)などのAnsi制御文字ですか。(フォーマットの時代を考えると、私はキャレット記法を使うべきだと思いますが、それは確かにしたいと思います。)
  • 区切り文字を使用しないように指定するにはどうすればよいですか?空の値を指定する必要がありますか、それとも設定を完全に除外する必要がありますか?

TIA

PS:注:私はBDE自体を使用していません。正しく生成して読み取る必要があるのは、これらのスキーマファイルだけです。

4

2 に答える 2

2

BorlandDelphiとともにインストールされるbde32.hlpというファイルをハードドライブで検索します。これは、BDEAPIのドキュメントを含むWindowsヘルプファイルです。また、*。schファイルの形式を説明する「外部スキーマのテキストテーブルへのバインド」というタイトルのトピックも含まれています。

「Languagedrivers」というタイトルの下に、同じヘルプファイルにはCharSet、*。schファイルのエントリに指定できる「短い名前」のリストも含まれています。

したがって、たとえば、西ヨーロッパ言語(Windows-1252)用のWindows文字セットを使用する場合、フランス語のアクセント付き文字またはドイツ語のウムラウトが必要になる場合、使用する値CharSetANSIINTL次のようになります。

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

.schファイル自体に使用できるエンコーディングは何ですか?(これは、フィールド名およびその他の構成可能な文字を正しく解釈するために関連します。)

単なるASCII。0〜127の文字コードを持つ古き良きASCII文字以外のものを使用する必要がある、または使用できるシナリオはありません。それらのうち(異なる行を区切るための改行を除く)は、印刷可能な文字のみが意味を持ちます。

たとえば、テーブル名または列名に他の文字(ウムラウト、アクセント付き文字など)を含めることはできません。

印刷できない区切り文字と区切り文字をどのように指定すればよいですか。たとえば、「Unit Separator」($ 1F)や単純な「Tab」($ 09)などのAnsi制御文字ですか。(フォーマットの時代を考えると、私はキャレット記法を使うべきだと思いますが、それは確かにしたいと思います。)

ありえない。区切り文字と区切り文字として使用できるのは、「表示されている」文字のみです。タブを使用するには、空の割り当てを使用するだけです。

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

区切り文字を使用しないように指定するにはどうすればよいですか?空の値を指定する必要がありますか、それとも設定を完全に除外する必要がありますか?

「固定」形式では、区切り文字や区切り文字は使用されません。「Varying」形式では、文字列/文字タイプの列には常に区切り文字が使用され、他の列タイプには区切り文字が使用されることはありません。区切り文字を使用しない場合は、スキーマで空の割り当てを使用するだけです。

[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL
于 2009-05-04T20:53:51.477 に答える
0

あなたの質問に対する決定的な答えを得るのは本当に難しいでしょう。BDEは何年もの間非推奨になっており、元の開発者のほとんどは他の仕事に移っています。

メモリが正しく機能する場合、BDEのテキスト(後のASCII)サポートは、最初にODAPIおよびその後のIDAPI(Independent Database API、90年代初頭のBorland、Novell、IBM、およびWordPerfectの共同開発)と呼ばれたときにすでに存在していました。

その間に、BorlandはInpriseになり、エンタープライズ市場に焦点を移し、再びBorlandになり、開発者ツールとデータベースグループをCodeGearに分離し、CodeGearをEmbarcaderoに販売しました(最終的には開発者中心になりました)。

私はまともな何かを考え出し、後でこの答えを拡張しようとするか、DelphiLiveで質問します!次の週。

ちょっとまって :-)

編集1:いくつかの詳細情報

ASCIIのサポートはidasci32.dllにあります

これらのフィールドの値:

ファイルタイプ:

  • 修理済み
  • 区切られた

区切り文字:不明

セパレーター:不明

文字コード:

  • アスキー
于 2009-05-04T12:45:10.433 に答える