¿Qué estándar usa BDE para los archivos de esquema .sch?
-
03-07-2019 - |
Pregunta
Me preguntaba: ¿existe un estándar (como un RFC) para el formato de archivo de esquema .sch que utiliza el BDE?
El formato se describe aquí y aquí . Parece que se basa en este formato de Microsoft , pero no es exactamente lo mismo .
Ejemplo 1 - Archivo de formato VARYING
CLIENTE.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
CLIENTE.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
Ejemplo 2 - Archivo de formato FIJO
CLIENTE.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
CLIENTE.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
Estoy especialmente interesado en los posibles valores-argumento para 'Tipo de archivo', 'Delimitador', 'Separador' y 'Conjunto de caracteres'. He buscado en Internet utilizando varios términos ('RFC', 'schema', 'filetype', 'standard', etc.), pero no pude ver nada ...
Cosas que me gustaría saber específicamente:
- ¿Qué codificación (s) se pueden usar para el propio archivo .sch? (Esto es relevante para interpretar correctamente los nombres de campo y otros caracteres configurables).
- ¿Cómo debo especificar los caracteres separadores y delimitadores no imprimibles, por ejemplo, un carácter de control de Ansi como " Separador de unidades " ($ 1F) o incluso una simple " Tab " ($ 09)? (Dada la edad del formato, creo que debería usar la notación Caret, pero me gustaría estar seguro).
- ¿Cómo puedo especificar que no se use un Delimitador? ¿Debo especificar un valor vacío, o dejar todo el conjunto?
TIA
PS: Tenga en cuenta que no estoy usando el BDE en sí, son solo estos archivos de esquema los que tengo que generar y leer correctamente.
Solución
Busca en tu disco duro un archivo llamado bde32.hlp que esté instalado con Borland Delphi. Es un archivo de Ayuda de Windows que contiene una documentación de la API de BDE. También contiene un tema titulado "Enlace de esquema externo a tablas de texto". que describe el formato de los archivos * .sch.
Bajo el título " Controladores de idioma " ;, el mismo archivo de ayuda también contiene una lista de " nombres cortos " que se puede especificar para la entrada CharSet
en el archivo * .sch.
Entonces, por ejemplo, si desea usar el conjunto de caracteres de Windows para los idiomas de Europa occidental (Windows-1252), que necesitará para los caracteres con acento francés o diéresis alemanas, el valor a usar para CharSet es
ANSIINTL
así:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ANSIINTL
¿Qué codificación (s) se pueden usar para el .sch archivo en sí? (Esto es relevante por interpretar correctamente el nombres de campo y otros configurables caracteres.)
Simplemente ASCII. No hay ningún escenario que requiera o le permita usar nada que no sean buenos caracteres ASCII antiguos con códigos de caracteres del 0-127 y de esos (excepto los saltos de línea para separar las diferentes líneas) solo los caracteres imprimibles son significativos.
Por ejemplo, no se permiten otros caracteres (diéresis, caracteres acentuados, etc.) en el nombre de la tabla o los nombres de las columnas.
¿Cómo debo especificar no imprimible Separador y caracteres delimitadores, por ejemplo, un carácter de control Ansi como " Separador de unidades " ($ 1F) o incluso una simple " Tab " ($ 09)? (Dada la edad de El formato creo que debería usar Caret. notación, pero le gustaría ser seguro.)
No es posible. Sólo " visible " Los caracteres se pueden utilizar como delimitador y separador. Para usar una pestaña, solo usa una tarea vacía:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=
CharSet=ANSIINTL
¿Cómo puedo especificar que no use un Delimitador ¿Debo especificar un vacío? valor, o dejar la puesta en marcha en total?
En " Fijo " Formato, no se utilizan separadores ni delimitadores. En " Variando " Formato, un delimitador siempre se usa para columnas con tipo de cadena / carácter y un delimitador nunca se usa para otros tipos de columna. Para no usar un delimitador, solo use una asignación vacía en el esquema:
[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL
Otros consejos
Será muy difícil obtener una respuesta definitiva a tu pregunta. BDE ha estado en desuso hace años, y la mayoría de los desarrolladores originales se han trasladado a otros trabajos.
Si la memoria me sirve correctamente, el soporte de texto (posteriormente ASCII) del BDE ya estaba allí cuando se llamó ODAPI por primera vez y luego IDAPI (API de base de datos independiente, un desarrollo de código de Borland, Novell, IBM y WordPerfect a principios de los 90).
Mientras tanto, Borland se convirtió en Inprise, se enfocó en el mercado empresarial, se convirtió nuevamente en Borland, separó el grupo de herramientas y bases de datos de desarrolladores en CodeGear y vendió CodeGear a Embarcadero (que finalmente fue nuevamente centrado en desarrolladores).
Intentaré encontrar algo decente y extender esta respuesta más adelante, o preguntaré en DelphiLive! la semana que viene.
Espera :-)
Editar 1 : más información
El soporte para ASCII está en idasci32.dll
Valores de valor para estos campos:
Tipo de archivo:
- Corregido
- Delimitado
Delimitador: desconocido
Separador: desconocido
CharSet:
- ascii