Quelle norme BDE utilise-t-il pour les fichiers de schéma .sch?
-
03-07-2019 - |
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.
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