Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Per avere rapidamente a disposizione un sistema per caricare file di impostazioni formattati testualmente (e quindi modificabili "a mano") per i miei programmini in C, ho messo insieme un meccanismo che usa tag etichettati in una forma simile a queste:
In tutti e tre gli esempi i due dati sono "dato" e "altro dato".
In tutti e tre gli esempi il dato è "accompagnato" da un clausola di apertura e una di chiusura. La clausola di apertura è immediatamente preceduta da un'etichetta univoca, diciamo un ID, a sua volta preceduta da un carattere di spaziatura (a meno che sia subito "in testa" al file, nel qual caso può essere omesso).
L'etichetta e le clausole di apertura/chiusura possono essere qualsiasi stringa venga in mente (caratteri da 1 byte), purché si stia attenti a non generare ambiguità.
Il riconoscimento di etichette e clausole di apertura/chiusura distingue tra maiuscole e minuscole.
Il meccanismo è altamente inefficiente, e si presta solo all'uso con quantità di dati ridotte. In queste condizioni penso possa essere pratico per via della sua immediatezza.
Ecco il codice, per i curiosi.
I file tag_etichettati.h e tag_etichettati.c sono conformati in modo da poter essere compilati come libreria statica.
Il file main.c contiene un programmino che ho predisposto per testare le funzioni di lettura dei dati.
case 3: gestisci_estrazione_tag_esadecimale();break;
default:puts("Errore: tipo dato non riconosciuto.\n");
}
}
Perché ho messo qui il codice? Boh. Magari a qualcuno scappa qualche commento o, meglio, qualche suggerimento. Tenete sempre presente che per me tutto questo è un passatempo, non un mestiere -- non sono neanche lontamente uno "specialista".
Ultima modifica effettuata da AldoBaldo il 03/04/2020 alle 14:39
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
Postato originariamente da AldoBaldo: Perché ho messo qui il codice? Boh. Magari a qualcuno scappa qualche commento o, meglio, qualche suggerimento. Tenete sempre presente che per me tutto questo è un passatempo, non un mestiere -- non sono neanche lontamente uno "specialista".
Su questo punto hai tutta la mia comprensione.
Cmq io sparo la cavolata dopo quasi 1 mese di clausura con moglie figli e cani, hai pensato a gestire oggetti JSON ???
In fondo il principo del formato JSON è CHIAVE:VALORE il che riconduce al tuo ETICHETTAATO.
In C puro non saprei come manipolarlo, ma sicuramente ci sarà in giro documentazione.
OK se ho detto una cavolata ... mi fustigo da solo ... tanto sono in clausura
PS: Maestro AldoBaldo... la forza scorre forte nei nostri Padawan, ricorda
G.
Non ricordo più da parte di chi, ma un riferimento a questo JSON era già apparso in questi luoghi. Incuriosito, avevo cercato qualche informazione, ma ne avevo ricavato la sensazione di essere davanti a qualcosa di più articolato di quello che sarei stato in grado di "manipolare". Potrei provare a rivedere quelle informazioni oggi. Magari in questi anni ho assimiliato quanto serve per capirci di più. Sai che faccio? Cerco subito e torno a scrivere le mie impressioni.
Grazie per lo spunto.
===================
EDIT
Ho letto qualcosina.
Ora ricordo perché l'avevo scartato. Ci sono alcune cose che mi mettono "all'angolo". Cito testualmente dal testo che ho appena scorso:
1) "strutture possono essere annidate"
2) "raccolta di zero o più caratteri Unicode"
3) "sequenze di escape" (segue nutrito elenco)
4) esistono già svariate librerie e classi per gestire questo formato
1) leggere e interpretare strutture annidate mi mette in crisi, risolvere il problema richiede con ogni probabilità tecniche che uso a stento, che non padroneggio (ricorsione?)
2) non conosco i meccanismi per usare Unicode, che non ho mai usato
3) dovrei prendere in considerazione tutta una pletora di sequenze di escape, capirne il meccanismo
4) ...per poi ottenere qualcosa che è già stato fatto e rifatto infinite volte, cioè per "reinventare la ruota"
No, affrontare 'sto JSON non mi divertirebbe neppure oggi (e non so neppure se riuscirei ad arrivare all'obbiettivo che avevo in mente). Per i miei scopi (limitati) credo sia più semplice e diretta la strada che ho seguito. Ammesso che funzioni come ho in mente e non ci siano difetti che mandano tutto a rotoli.
Comunque, proprio in questo momento sto ancora leggendo altre pagine. Magari cambio idea, chissà.
P.S. La forza non so neppure più dove stia di casa. Più che a "Guerre stellari" sento di potermi rifare a questo:
Ultima modifica effettuata da AldoBaldo il 04/04/2020 alle 0:41
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
Vecchia roba (sarebbe meglio un xml) ma ti potrebbe bastare per i tuoi scopi. E hai le api in windows. Come facevano tutti nei decenni passati prima che tu scoprissi questa necessita' e reinventassi la ruota
Vedi
WritePrivateProfileString GetPrivateProfileString
Ultima modifica effettuata da nessuno il 04/04/2020 alle 8:47
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Nei file .ini mi sono in effetti imbattututo più volte, sono tanti i programmi che ne spargono qua e là, però non ho mai approfondito. E' un bel suggerimento, questa sero leggerò senz'altro qualcosa e ti dirò com'è andata. Ora devo andare a piantare le cipolle, se no mi germogliano nel sacchetto e si indeboliscono.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
Piantate le cipolle! Taaaaante cipolle. Domani sera, tempo permettendo, vado giù di scalogno.
Ho pure trovato il tempo di vedere qualche informazione sul formato .ini. Non ne sono rimasto esaltato. Per i miei scopi limitati, continuo a preferire il mio metodo "ruspante".
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.