07/09/2023 - amorosik ha scritto:
“..meglio un database..” non credo proprio, un aumento complessita' inutile, almeno in questo caso
L'unica complessità che aumenta è quella della struttura del file, mentre per il resto il codice sarebbe del tutto equivalente: invece di aprire un file di testo specificandone il percorso si andrebbe ad aprire un file di database locale (es. SQLite o affine), invece di leggere valori di setting da sezioni di un file di testo si andrebbe a leggere il valore di un campo tipizzato da una tabella… ai fini della codifica, soprattutto in Delphi, il codice da scrivere sarebbe identico e non ci sarebbero complessità particolari da dover gestire.
Anzi, il beneficio derivante dal fatto che il database gestisce per lo sviluppatore eventuali lock di record, o snapshot di valori per poterli leggere mentre sono in modifica dall'altra parte, eviterebbe di mettere in piedi il workflow proposto da migliorabile, che condivido pienamente e che - usando dei semplici file - è sostanzialmente l'unico modo sicuro e affidabile per poter implementare quanto è richiesto, se si sceglie di usare un semplice file di testo.
07/09/2023 - amorosik ha scritto:
La SOLUZIONE e' ovviamente l'invio diretto di un messaggio da programma a programma, ma piu' semplice ancora da realizzare e' l'uso di un file ini o altro file di testo
Io infatti punterei a imbastire un meccanismo di comunicazione tra processi o con un sistema di messaggistica, ma comprendo anche la necessità di tenere le cose semplici, motivo per cui non ho approfondito né suggerito questa strada. Detto questo, visto che si vuole utilizzare un semplice file per questa comunicazione, tanto vale usare un formato più strutturato del file INI, e che magari possa gestire nativamente (grazie ai clienti già disponibili) le funzionalità richieste, cosa che un file INI invece non fa, visto che è stato creato per altri scopi.
Oltre a questo, ci aggiungo anche un fattore di minima apertura verso quelle che potrebbero essere necessità future: se uso un database, posso scegliere cosa caricare dalla tabella delle “informazioni” da passare, posso prelevare le cose da fare e contrassegnarle come “fatte”, posso tenere uno “storico” con poco sforzo, un domani posso migrare lo stesso file a una architettura più complessa (es. client/server), in breve ho una rosa di possibilità più ampie che potrei sfruttare.
Non è detto che quelle indicate sopra siano esigenze richieste per forza, anzi magari non diventeranno mai necessarie, ma intanto dovendo caricare informazioni da un file fisico, quantomeno si è scelto un formato che da senz'altro maggiori potenzialità, al costo (zero) di scrivere lo stesso codice praticamente equivalente dal punto di vista della lunghezza e della complessità.
07/09/2023 - amorosik ha scritto:
Non e' ben chiaro perche' dici che l'uso di un file INI sia sconsigliato, se a lui basta questo e' uno dei sistemi piu' semplici che esistano per passare informazioni da una procedura ad un'altra, facilmente verificabile, modificabile con un editor di testo, ecc..
Mi pare di aver argomentato, poi si può essere d'accordo o meno, in base ai propri gusti e attitudini.
Per concludere, i file INI si chiamano “INI” proprio perché hanno un preciso obiettivo: riportare i comandi di inizializzazione di un programma che provvede a leggerli all'avvio.
Usi di altro tipo possono senz'altro esistere, ma (a mio parere s'intende) sono un “piegarli” a fare qualcosa che normalmente non dovrebbero fare, e almeno personalmente prediligo formati di file (o scambi di messaggi) più strutturati, basati su testo ma tipizzati, oppure anche binari come quelli di tanti database di tipo “file based”.
Certo, questi ultimi non sono leggibili con un blocco note come i file INI, ma basta uno dei tanti client opensource disponibili per determinati file per accedere ai dati, visualizzarli e modificarli, sfruttando tutta una serie di facilitazioni (verifiche di validità, vincoli di chiave, ecc.) che rendono il tutto meno “error prone” senza richiedere allo sviluppatore sforzi aggiuntivi, anzi semplificandone il lavoro.