L'articolo è da considerarsi obsoleto in quanto fa uso di una libreria che oramai è stata pienamente superata dal codice presente nella unit fpjson distribuita insieme al compilatore pascal. Una documentazione molto esauriente (tratta sia XML che JSON) è stata fornita dall'autore stesso della unit ed è visionabile tramite il seguente link: http://www.freepascal.org/~michael/articles/webdata/webdata.pdf
Segue l'articolo originale.
Articolo originale
Si sente spesso parlare di file JSON e se ne sente spesso parlare relativamente allo sviluppo su web in quanto basato sul linguaggio JavaScript (Standard ECMA-262 3ª edizione dicembre 1999). In realtà la sua vera natura - quella di essere un formato per l'interscambio di dati tra applicazioni - lo ha portato ad essere usato nei contesti più disparati nell'ambito della programmazione e, come si può desumere da "http://www.json.org/", oramai esistono librerie per moltissimi linguaggi di programmazione, incluso il FreePascal.
Ha diverse mancanze rispetto all'XML. Ad esempio non ha il concetto di attributo e non è utilizzabile né con file XLST, né con file DTD. Ha però dalla sua la semplicità della rappresentazione delle strutture dati (e quindi facilità nel parsing) e la semplicità di essere letto e manipolato dagli esseri umani.
Giusto per avere un primo e semplice approccio, segue un esempio in questo formato:
La semplicità salta subito all'occhio. Si tratta fondamentalmente di combinazioni nome/valore dove il valore, quando di tipo stringa, è delimitato dal doppio apice. Un accenno particolare va ai campi "email" ed "indirizzi" che in realtà sono rappresentazioni di array. Un array è delimitato dalle parentesi quadre e quando composto da una semplice lista di valori ("email") basta indicare gli elementi separati da una virgola. Quando invece l'array è composto da tipi strutturati ("indirizzi"), gli elementi vanno specificati tra parentesi graffe.
Ora però, come esempio pratico, vorrei proporre l'uso di questo formato per la memorizzazione delle impostazioni necessarie ad una ipotetica applicazione dedicata all'aggiornamento dei database.
La libreria che andremo a provare l'ho stata scaricata dal sito http://code.google.com/p/superobject/downloads/list e per chi volesse saperne di più: http://www.progdigy.com/ Si tratta di sorgenti con doppia licenza: MPL o LGPL. Una volta decompresso il file superobjectv1.2.4.zip, avremo a disposizione 2 file sorgenti chiamati superobject.pas e superxmlparser.pas che si occupano rispettivamente del parsing dei file JSON ed XML. A corredo anche una serie di demo e di progetti test da studiare. Tra le demo, ci sono interessanti applicazioni con google search, RTTI e VirtualTreeView.
Tornando al nostro ipotetico tool per l'aggiornamento di database, andiamo a creare, con Lazarus, una nuova applicazione. Tramite l'analizzatore progetti possiamo aggiungere la unit superobject.pas al nostro progetto (il tutto risiede in un unico file .PAS e non ci sono pacchetti da installare). Sulla form principale aggiungiamo: - un TEdit chiamato edDefPath ed impostiamo la proprietà Text con la fullpath del file database.def - un TButton - un TMemo chiamato Memo1
Torniamo al sorgente della form principale e, sotto implementation, mettiamo in "uses" superobject. Fatto questo, nella sezione public, dichiariamo: procedure ScanDef(FilePath: string; log: TStrings);
procedure TForm1.Button1Click(Sender: TObject); begin ScanDef(edDefPath.Text, Memo1.Lines); end;
a questo punto non resta che lanciare il tutto con F9 e cliccare su Button1. Se tutto è andato come doveva, vedrete popolare il Memo con le impostazioni lette dal file.
Quello mostrato qui è solo un piccolo sottoinsieme delle possibilità che si hanno a disposizione con l'utilizzo di questa libreria; una volta iniziato a capire come funziona è possibile dare un'occhiata alle varie demo e al file README.html per scoprirne altre funzionalità.
Written by xinyimanposted in WEB Marzo 09, 2012, 10:03:00 am22804 ViewsRating: 0 (0 Rates)Print
Quando si effettua programmazione orientata al web con le CGI Free Spider si necessita a volte di voler fare un redirect, ad esempio per una gestione di login capita di doverlo fare nella fase di convalida del dato! Bene fare ciò è abbastanza facile, basta inserire questa procedura nel vostro codice, unico vincolo è che il vostro TDataModule si chiama TDataModule1 (diversamente cambiatelo nel codice sottostante con il vostro nome).
Per far funzionare correttamente il codice togliete gli spazi dopo il carattere < e prima del carattere >. Ho dovuto aggiungerli per non creare problemi al sito!
Written by xinyimanposted in WEB Marzo 06, 2012, 01:48:00 pm24313 ViewsRating: 0 (0 Rates)Print
Succede sovente di dover lavorare con delle griglie all'interno di una pagina web, potremmo usare le tabelle, ma non sono certamente così accattivanti e comode da usare come invece le JQGrid.
Per prima cosa apriamo un nuovo progetto CGI (se non sappiamo come fare leggere qui http://www.lazaruspascal.it/index.php?page=87 ) che chiamiamo JGrid. Ora aggiungiamo al progetto i seguenti due oggetti, che troviamo nella "Tab" "FreeSpider"
Written by xinyimanposted in WEB Marzo 02, 2012, 01:54:00 pm21671 ViewsRating: 0 (0 Rates)Print
Prerequisiti: aver letto la serie di articoli dedicata alla programmazione WEB con Lazarus + Free Spider ed averne studiato gli esempi.
Alcune lezioni fa abbiamo parlato dell'oggetto TSpiderPage (alla pagina http://www.lazaruspascal.it/index.php?page=93 ) in cui accennavamo alla possibilità di separare l'operatività della pagina dal layout della pagina, ed il TSpiderPage lavorava bene a tal proposito se tutti gli elementi di layout erano all'interno della pagina presa in ingresso dal TSpiderPage, ma se già tale pagina html faceva riferimento a dei fogli di stile esterni (file .css) o ad immagini queste non vengono prese in considerazione (o almeno io non ho capito come fare). Per risolvere questo problema ci viene in soccorso l'oggetto THtmlTemplate che trovate nella libreria "JQuery UI" (alla pagina http://www.lazaruspascal.it/index.php?page=101 ). Vediamo come si usa, per prima cosa copiamo i file che compongono la libreria "JQuery UI" nella cartella dove risiede il nostro progetto CGI. Successivamente aggiungiamo la seguente unit "htmltemplate" al nostro progetto.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.