O padrão faz uso BDE para .sch arquivos de esquema?
-
03-07-2019 - |
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
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