Pergunta

Eu queria saber - há um padrão (como um RFC) para o formato de arquivo de esquema .sch os usos BDE

?

O formato é descrito aqui e aqui . Parece baseado em este Microsoft formato , mas não é bem a mesma coisa .

Exemplo 1 - arquivo de formato 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

Exemplo 2 - arquivo de formato fixo

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

Estou especialmente interessado nos valores de argumentos possíveis para 'Filetype', 'delimitador', 'separador' e 'charset'. Eu procurei na internet usando vários termos ( 'RFC', 'esquema', 'filetype', 'standard', etc), mas veio em branco ...

Coisas que eu gostaria de saber especificamente:

  • O que codificação (s) pode ser usado para o próprio arquivo .sch? (Isso é relevante para interpretar corretamente os nomes de campos e outros caracteres configuráveis.)
  • Como devo especificar não imprimíveis caracteres separador e delimitador, por exemplo um controle caracteres Ansi como "Unit Separator" ($ 1F) ou até mesmo um simples "Tab" ($ 09)? (Dada a idade do formato que eu acho que eu deveria usar a notação Caret, mas gostaria apenas para ter certeza.)
  • Como posso especificar para não-usar um delimitador? Devo especificar um valor vazio, ou deixe a configuração por completo?

TIA

PS:. Note, eu não estou usando o próprio BDE - é apenas esses arquivos de esquema que eu tenho que gerar e ler corretamente

Foi útil?

Solução

Procure em seu disco rígido para um arquivo chamado bde32.hlp que é instalado com Borland Delphi. É um arquivo de Ajuda do Windows que contém uma documentação da API do BDE. Ele também contém um tópico intitulado "A ligação esquema externo para tabelas de texto", que descreve o formato dos arquivos * .sch.

Sob o título "Linguagem motoristas", o mesmo arquivo de ajuda também contém uma lista de "nomes curtos" que podem ser especificados para a entrada CharSet no arquivo .sch *.

Assim, por exemplo, se você quiser usar o conjunto de caracteres do Windows para idiomas da Europa Ocidental (Windows-1252), que você vai precisar para o francês caracteres acentuados ou trema alemão, o valor a ser usado para CharSet é ANSIINTL assim:

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

O que codificação (s) podem ser usados ??para o .sch próprio arquivo? (Isso é relevante para interpretar correctamente o Nomes dos campos e outros configurável caracteres).

ASCII simplesmente. Não há cenário que exigem ou permitem que você use nada, mas bons caracteres ASCII antigos com códigos de caracteres de 0-127 e daqueles (exceto para quebras de linha para separar as diferentes linhas) apenas caracteres imprimíveis são significativos.

Por exemplo, não há outros caracteres (tremas, caracteres acentuados, etc) são permitidos no nome da tabela ou coluna nomes.

Como devo especificar não-imprimíveis Separador eo delimitador de caracteres, por exemplo, um controlo de caracteres ANSI como "Unit Separator" ($ 1F) ou mesmo um simples "Tab" ($ 09)? (Dada a idade de o formato que eu acho que eu deveria usar Caret notação, mas apenas gostaria de ser certeza.)

Não é possível. Apenas caracteres "visíveis" pode ser usado como delimitador e separador. Para usar uma guia, basta usar uma atribuição vazia:

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

Como posso especificar para não usar um Delimitador? Devo especificar um vazio valor, ou deixar o estabelecendo completamente?

No formato "fixo", sem separadores e não delimitadores são utilizados. No formato "Variável", um delimitador é sempre usado para colunas com tipo string / personagem e um delimitador nunca é usado para outros tipos de colunas. Para não usar um delimitador, é só usar uma atribuição vazia no esquema:

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

Outras dicas

Vai ser realmente difícil de obter uma resposta definitiva para sua pergunta. BDE foi substituído por anos agora, ea maioria dos desenvolvedores originais se mudaram para outros postos de trabalho.

Se a memória não me falha, o apoio de texto (ASCII posterior) da BDE já estava lá quando foi chamado pela primeira vez ODAPI e mais tarde IDAPI (API de banco de dados independente, a co-desenvolvimento da Borland, Novell, IBM e WordPerfect no início dos anos 90).

Nesse meio tempo, a Borland se tornou Inprise, mudou seu foco para o mercado corporativo, tornou-se Borland novamente, separados do grupo ferramentas de desenvolvimento e bancos de dados em CodeGear e vendido CodeGear para Embarcadero (que finalmente foi desenvolvedor centric de novo).

Vou tentar chegar a algo decente e estender esta resposta mais tarde, ou pedir ao redor em DelphiLive! na próxima semana.

Hang on: -)

Editar 1 : alguns mais informações

O suporte para ASCII está em idasci32.dll

Os valores valor para estes campos:

filetype:

  • Fixed
  • delimitado

delimitador: desconhecido

Separador: desconhecido

CharSet:

  • ascii
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top