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.

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top