Question

Je me demandais - existe-t-il une norme (comme une RFC) pour le format de fichier de schéma .sch utilisé par le BDE?

Le format est décrit ici et ici . Cela semble basé sur ce format Microsoft , mais ce n'est pas tout à fait le même .

Exemple 1 - Fichier au format VARYING

CLIENT.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

CLIENT.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

Exemple 2 - Fichier au format FIXED

CLIENT.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

CLIENT.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

Je suis particulièrement intéressé par les valeurs-arguments possibles pour 'Filetype', 'Delimiter', 'Separator' et 'CharSet'. J'ai effectué des recherches sur Internet à l'aide de divers termes ("RFC", "schéma", "type de fichier", "standard", etc.), mais je n'ai rien trouvé ...

Ce que je voudrais savoir plus précisément:

  • Quel (s) encodage (s) peut-on utiliser pour le fichier .sch lui-même? (Ceci est important pour interpréter correctement les noms de champs et autres caractères configurables.)
  • Comment spécifier des caractères de séparation et de délimitation non imprimables, par exemple un caractère de contrôle Ansi du type "Unit Separator" (1 $) ou même un simple " onglet " (09 $)? (Étant donné l'âge du format, je pense que je devrais utiliser la notation Caret, mais il aimerait simplement en être sûr.)
  • Comment puis-je spécifier de ne pas utiliser de délimiteur? Dois-je spécifier une valeur vide, ou laisser complètement la mise?

TIA

Remarque: je n'utilise pas le BDE lui-même. Ce sont juste ces fichiers de schéma que je dois générer et lire correctement.

Était-ce utile?

La solution

Recherchez sur votre disque dur un fichier appelé bde32.hlp installé avec Borland Delphi. Il s’agit d’un fichier d’aide Windows contenant une documentation de l’API BDE. Il contient également une rubrique intitulée "Liaison de schéma externe à des tableaux de texte". qui décrit le format des fichiers * .sch.

Sous le titre "Pilotes de langue", le même fichier d’aide contient également une liste de "noms abrégés". qui peut être spécifié pour l'entrée CharSet dans le fichier * .sch.

Ainsi, par exemple, si vous souhaitez utiliser le jeu de caractères Windows pour les langues d'Europe occidentale (Windows-1252), dont vous aurez besoin pour les caractères accentués français ou les trémas allemands, la valeur à utiliser pour CharSet est ANSIINTL comme ça:

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

Quel (s) encodage (s) peuvent être utilisés pour la   Fichier .sch lui-même? (Ceci est pertinent   pour interpréter correctement le   noms de champs et autres configurables   caractères.)

Simplement ASCII. Il n’existe aucun scénario qui exigerait ou vous permettrait d’utiliser autre chose que de bons vieux caractères ASCII avec des codes de caractère compris entre 0 et 127 et parmi ceux-ci (à l’exception des sauts de ligne destinés à séparer les différentes lignes), seuls les caractères imprimables ont un sens.

Par exemple, aucun autre caractère (trémas, caractères accentués, etc.) n'est autorisé dans le nom de la table ou les noms des colonnes.

  

Comment dois-je spécifier non imprimable   Caractères séparateur et délimiteur,   par exemple un caractère de contrôle Ansi   comme " Unité Séparateur " (1F $) ou même un   simple " Onglet " (09 $)? (Vu l'âge de   le format que je pense que je devrais utiliser Caret   notation, mais il voudrait juste être   bien sûr.)

Pas possible. Seulement " visible " les caractères peuvent être utilisés comme délimiteur et séparateur. Pour utiliser un onglet, utilisez simplement une affectation vide:

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

Comment puis-je spécifier de ne pas utiliser de   Délimiteur? Dois-je spécifier un vide   valeur, ou laisser la mise   tout à fait?

Dans " Fixé " format, pas de séparateurs ni de délimiteurs sont utilisés. Dans "Variation" format, un délimiteur est toujours utilisé pour les colonnes avec un type chaîne / caractère et un délimiteur n'est jamais utilisé pour d'autres types de colonnes. Pour ne pas utiliser de délimiteur, utilisez simplement une affectation vide dans le schéma:

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

Autres conseils

Il sera très difficile d’obtenir une réponse définitive à votre question. Le BDE est obsolète depuis des années et la plupart des développeurs d’origine sont passés à d’autres emplois.

Si ma mémoire est bonne, le support du BDE sous forme de texte (plus tard ASCII) s'y trouvait déjà lorsqu'il a été appelé pour la première fois ODAPI et plus tard IDAPI (API de base de données indépendante, un développement de Borland, Novell, IBM et WordPerfect au début des années 90).

Dans le même temps, Borland est devenu Inprise, s'est concentré à nouveau sur le marché des entreprises, est redevenu Borland, a séparé le groupe d'outils de développement et de bases de données dans CodeGear et a vendu CodeGear à Embarcadero (qui était à nouveau centré sur le développeur).

Je vais essayer de trouver quelque chose de convenable et d’élargir cette réponse ultérieurement, ou de demander à DelphiLive! . la semaine prochaine.

Attendez: -)

Modifier 1 : quelques informations supplémentaires

Le support pour ASCII est dans idasci32.dll

Valeurs de ces champs:

Type de fichier:

  • corrigé
  • délimité

Délimiteur: inconnu

Séparateur: inconnu

CharSet:

  • ascii
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top