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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top