Quale standard utilizza BDE per i file di schema .sch?
-
03-07-2019 - |
Domanda
Mi chiedevo: esiste uno standard (come un RFC) per il formato di file di schema .sch che utilizza BDE?
Il formato è descritto qui e qui . Sembra basato su questo formato Microsoft , ma non è esattamente lo stesso .
Esempio 1 - File in 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
Esempio 2 - File di formato FISSO
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
Sono particolarmente interessato ai possibili valori-argomento per 'Tipo di file', 'Delimitatore', 'Separatore' e 'CharSet'. Ho cercato su Internet usando vari termini ("RFC", "schema", "tipo di file", "standard", ecc.), Ma mi è venuto in bianco ...
Cose che vorrei sapere nello specifico:
- Quali codifiche possono essere utilizzate per il file .sch stesso? (Questo è rilevante per interpretare correttamente i nomi dei campi e altri caratteri configurabili.)
- Come devo specificare i caratteri separatore e delimitatore non stampabili, ad esempio un carattere di controllo Ansi come "Separatore unità"? ($ 1F) o anche un semplice "Tab" ($ 09)? (Data l'età del formato penso che dovrei usare la notazione Caret, ma vorrei esserne sicuro.)
- Come posso specificare di non usare un delimitatore? Devo specificare un valore vuoto o lasciare del tutto fuori l'impostazione?
TIA
PS: Nota, non sto usando il BDE stesso - sono solo questi file di schema che devo generare e leggere correttamente.
Soluzione
Cerca nel tuo disco rigido un file chiamato bde32.hlp installato con Borland Delphi. È un file della Guida di Windows che contiene una documentazione dell'API BDE. Contiene inoltre un argomento intitolato "Associare schema esterno a tabelle di testo" che descrive il formato dei file * .sch.
Sotto il titolo "Driver di lingua", lo stesso file della guida contiene anche un elenco di "nomi abbreviati" che può essere specificato per la voce CharSet
nel file * .sch.
Quindi, ad esempio, se si desidera utilizzare il set di caratteri di Windows per le lingue dell'Europa occidentale (Windows-1252), che sarà necessario per i caratteri accentati in francese o le umlaut tedesche, il valore da utilizzare per CharSet
è ANSIINTL
in questo modo:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ANSIINTL
Quali codifiche possono essere utilizzate per Il file .sch stesso? (Questo è rilevante per interpretare correttamente il nomi di campo e altri configurabili caratteri).
Semplicemente ASCII. Non esiste uno scenario che richieda o consenta di utilizzare qualsiasi altro tranne i vecchi caratteri ASCII con codici di caratteri da 0-127 e di quelli (ad eccezione delle interruzioni di riga per separare le diverse linee) solo i caratteri stampabili sono significativi.
Ad esempio, nessun altro personaggio (umlaut, caratteri accentati, ecc.) è consentito nel nome della tabella o nei nomi delle colonne.
Come devo specificare non stampabile Caratteri separatore e delimitatore, per esempio un carattere di controllo Ansi come " Separatore unità " ($ 1F) o anche a semplice " Tab " ($ 09)? (Data l'età di il formato penso che dovrei usare Caret notazione, ma mi piacerebbe solo esserlo certo.)
Non possibile. Solo " visibile " i caratteri possono essere usati come delimitatore e separatore. Per utilizzare una scheda, basta usare un compito vuoto:
[CUSTOMER]
Filetype=VARYING
Delimiter="
Separator=
CharSet=ANSIINTL
Come posso specificare di non usare a Delimitatore? Devo specificare un vuoto valore o lasciare fuori l'impostazione del tutto?
In " Risolto " formato, nessun separatore e nessun delimitatore sono usati. In "Variabile" formato, un delimitatore viene sempre utilizzato per le colonne con tipo stringa / carattere e un delimitatore non viene mai utilizzato per altri tipi di colonna. Per non usare un delimitatore, basta usare un compito vuoto nello schema:
[CUSTOMER]
Filetype=VARYING
Delimiter=
Separator=,
CharSet=ANSIINTL
Altri suggerimenti
Sarà davvero difficile ottenere una risposta definitiva alla tua domanda. BDE è ormai obsoleto da anni e la maggior parte degli sviluppatori originali è passata ad altri lavori.
Se la memoria mi serve correttamente, il supporto testuale (in seguito ASCII) del BDE era già presente quando è stato chiamato ODAPI e successivamente IDAPI (API di database indipendente, sviluppo di codice di Borland, Novell, IBM e WordPerfect nei primi anni '90).
Nel frattempo, Borland divenne Inprise, spostò la sua attenzione sul mercato aziendale, tornò a Borland, separò il gruppo di strumenti di sviluppo e database in CodeGear e vendette CodeGear a Embarcadero (che alla fine era di nuovo centrato sullo sviluppatore).
Proverò a trovare qualcosa di decente ed estenderò questa risposta in seguito, o chiederò in giro a DelphiLive! la prossima settimana.
Aspetta :-)
Modifica 1 : ulteriori informazioni
Il supporto per ASCII è in idasci32.dll
Valori valore per questi campi:
Tipo di file:
- Risolto
- Delimitato
Delimitatore: sconosciuto
Separatore: sconosciuto
CharSet:
- ASCII