* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 21, 2024, 04:35:12 pm

Inserisci il nome utente, la password e la durata della sessione.

106 Visitatori, 0 Utenti

Autore Topic: progetto web forum lazaruspascal.it  (Letto 208888 volte)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #45 il: Gennaio 18, 2013, 05:02:08 pm »
Imagination is more important than knowledge (A.Einstein)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #46 il: Gennaio 18, 2013, 07:51:06 pm »
sto guardando un po' in giro ed ho trovato un progetto abbandonato nel 2004
il codice è per delphi/kylix

http://sourceforge.net/projects/npascal/?source=dlp

Imagination is more important than knowledge (A.Einstein)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #47 il: Gennaio 19, 2013, 11:02:37 am »
un po' di codice

Sono partito dall'interprete pascal script di rem object e l'ho testato con lazarus 1.04, win7 32 bit.
Andrebbe testato su tutte le piattaforme se quindi qualcuno vuol fare qualche prova può anche segnalare conquale sistema è stata fatta.

Per scaricarlo, usate svn: http://code.remobjects.com/svn/pascalscript
e fate il checkout in [...]\lazarus\components\pascalscript

All'interno trovate il file LPK per installare il tutto.
Fatto questo potete scaricare l'esempio che ho provato io (tra l'altro trovate molti esempi nella cartella pascalscript\samples): si tratta di un progetto adattato.
In pratica:
  • ho tolto comobj in quanto mi davano errore e poi di ole non ce ne frega più di tanto
  • ho aggiunto a menù: "save compiled" e "load compiled" (ma non funzionano, poi ci torno)

Quando lanciate fon F9, aggiungete un semplice
Writeln('ciao');
e poi lanciate la compilazione: vedrete il risultato in Memo2.

La mia idea era quella di salvare il compilato per poi ricaricarlo e mandarlo in esecuzione ma non ci sono riuscito in quanto la procedura "Writeln" è importata (vedete in compilazione) ma non sono riuscito a fare la stessa cosa caricando il compilato...

Questo interprete ha molte possibilità, dategli un'occhiata, ma riassumendo:
  • si possono richiamare (come nell'esempio) procedure/funzioni dichiarate nel progetto binario
  • si possono richiamare procedure/funzioni da DLL
  • si può interagire con i compomenti del binario

credo sia una buona base di partenza, fate delle prove anche voi e ditemi cosa ne pensate.

Edit:
interagire con componenti e procedure nel binario vuol dire poter usare tutti i componenti compilati che ci vengono in mente dall'interno dello script.
Se siete d'accordo si può anche tirar fuori del codice da far interpretare (tipo <psp:page> di qualche post fa) e vedere come si potrebbe renderizzarlo.

Approcci diversi sono i benvenuti ma come è giò stato sottolineato iniziamo a ragionare con del codice sotto :)
« Ultima modifica: Gennaio 19, 2013, 11:17:23 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #48 il: Gennaio 19, 2013, 11:26:17 am »
giusto per spiegare cosa intendevo con preprocessore

ad esempio codice tipo
Codice: [Seleziona]
<html> 
<head><title>bla bla bla</title></head>
<body>
<p>
   Ora e Data: <%= Write('Sono le ore ' + FormatDateTime('hh:nn di ddd dd mmm yyyy', Now)) %>
</p>
</body>
</html>

potrebbe essere trasformato in questo sorgente e poi compilato:
Codice: [Seleziona]
Write('<html>');
Write('<head><title>bla bla bla</title></head>');
Writeln('<body>');
Write('<p> Ora e Data: ');
Write('Sono le ore ' + FormatDateTime('hh:nn di ddd dd mmm yyyy', Now));
Writeln('</p>');
Writeln('</body> </html> ');

una volta compilato è pronto per essere richiamato ed eseguito dal modulo apache.

lo so che è un approccio cgi (ma non ha i difetti del cgi: non deve essere caricato in memoria un binario per ogni richiesta web); intanto riflettiamoci sopra e vediamo alternative ;)
« Ultima modifica: Gennaio 19, 2013, 11:28:09 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:progetto web forum lazaruspascal.it
« Risposta #49 il: Gennaio 19, 2013, 04:20:24 pm »
Nomore, mi sembra carino. Nei prossimi giorni quando ho del tempo libero lo provo sicuramente.

 :)
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #50 il: Gennaio 20, 2013, 03:35:47 pm »
allora iniziamo a provare da qua, ci ho lavorato un po' sopra ed è una base per andare avanti in varie direzioni.

si tratta di un progetto per console.
all'interno della root del progetto trovate una cartella (webpas) con uno script pronto all'uso.
una volta compilato correttamente il progetto lpitr (non c'è uno nome, sta per: lazaruspascal.it runtime :D) basta andare in una shell del dos e lanciarlo con:
Codice: [Seleziona]
lpitr.exe >index.html
produrrà un file da "navigare" col browser

cose da fare:
  • inserire un parametro per indicare lo script da lanciare(emh... ora la path è una costante nel codice :P)
  • vedere come si può usare una funzione tipo FormatDateTime senza dichiararla in OnUses (c'è il componente import date utils ma ancora non l'ho fatto funzionare)
  • salvare il compilato nella stessa cartella del sorgente con estensione .psp
  • far partire la compilazione solo quando il .pas ha il timestamp dell'ultima omdifica diverso dal .psp; se sono uguali non si compila ma si carica il .psp nell'executor
  • varie ed eventuali
Imagination is more important than knowledge (A.Einstein)

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #51 il: Gennaio 21, 2013, 09:25:57 am »
Nomore, provo tutto...  ;D ci siamo un pochino rilasciati nel weekend....ne approfitto buongiorno e buon inizio settimana...

Marco e Samuele.

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #52 il: Gennaio 21, 2013, 12:05:23 pm »
Allora ho studiato il tutto in effetti è molto interessante....ma non ho ben capito come si schematizza la cosa...mi immaginavo questo...vi faccio un esempio

Linux/Win ---> Apache 2.0 --> MODULO APACHE PASCAL (interprete) --> OUTPUT html

Esempio:

  <html>
   <body>
       <% writeln('ciao mondo...'); %>
   </body>
  </html>

---> http//localhost/app/prova.html.pas ---> Modulo apache --> Interprete --> Output --->


  <html>
   <body>
       <p>ciao mondo..</p>
   </body>
  </html>

e' questo quello che facciamo????
Marco e Samuele.

Edit: mi basavo su http://wiki.freepascal.org/FPC_and_Apache_Modules e sto leggendo come scrivere moduli apache...non è più semplice...inveci di avere un compilato? Diteci se diciamo stronzxxx comunque domani farò un piccolo modulo apache poi faccio qualche prova e posto il codice...
« Ultima modifica: Gennaio 21, 2013, 12:14:59 pm da aesis »

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #53 il: Gennaio 21, 2013, 03:38:18 pm »
sono contento che lo troviate interessante,
a breve cercherò di spiegare per bene come si può schematizzare la cosa.

nel frattempo se provate a scrivere un modulo per apache, leggete anche questo:
http://opensoft.homeip.net:8080/articles/apache.pdf

non dimenticate che a dicembre 2012 è uscita la versione 2.4.x di apache: evitatela, usate la 2.2.x, in quanto potrebbe non essere compatibile con la documentazione fpc attualmente  a disposizione.
Imagination is more important than knowledge (A.Einstein)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #54 il: Gennaio 21, 2013, 08:18:58 pm »
@aesis
oggi non ho avuto modo di fare uno schema come si deve, comunque, sintetizzando, dovrebbe essere così:
si fa un modulo apache che ha
1) preprocessore (sviluppato da noi)
2) compilatore pcode pascal (quello in pascal script)
3) interprete pcode pascal (quello in pascal script)

operativamente lato sviluppo:
1) il programmatore, con un editor o un ide che sia, produce un file "index.psp"
2) il programmatore lancia l'url da un browser che invia la richiesta ad apache che la gira al ns modulo
3) il ns modulo:
Codice: [Seleziona]
se timestamp(index.psp) <> timestamp(index.pcode) then
   index.psp -> tramite preprocessore creazione -> index.pas
   index.pas -> tramite compilatore creazione -> index.pcode
   index.pcode -> timestamp impostata uguale a quella di -> index.psp
fine se
response := execute(index.pcode)
alla fine dello svilupppo, sul server web in produzione ci vanno tutti *.pcode

operativamente lato utente finale:
1) su un browser si inserisce l'url: [...]\index.psp
2) apache gira la richiesta al ns modulo
3) il ns modulo:
Codice: [Seleziona]
response := execute(index.pcode)


spero di essere stato chiaro e obiezioni e critiche sono le benvenute :)

Imagination is more important than knowledge (A.Einstein)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #55 il: Gennaio 21, 2013, 08:27:45 pm »
ora voglio fare delle domande io riguardo il codice e spero di ricevere molti spunti perchè a questo punto è ora di pensare al preprocessore.
premetto che non sono una cima in sviluppo web e quindi portate pazienza se sparo qualche boiata :P
 in rete ho trovato questo esempio in jps:

Codice: [Seleziona]
<HTML>
    <HEAD>
        <TITLE>Login using jsp</TITLE>
    </HEAD>
 
    <BODY>
        <H1>LOGIN FORM</H1>
        <%
        String myname =  (String)session.getAttribute("username");
       
        if(myname!=null)
            {
             out.println("Welcome  "+myname+"  , <a href=\"logout.jsp\" >Logout</a>");
            }
        else
            {
            %>
            <form action="checkLogin.jsp">
                <table>
                    <tr>
                        <td> Username  : </td><td> <input name="username" size=15 type="text" /> </td>
                    </tr>
                    <tr>
                        <td> Password  : </td><td> <input name="password" size=15 type="text" /> </td>
                    </tr>
                </table>
                <input type="submit" value="login" />
            </form>
            <%
            }
         
             
            %>
         
    </BODY>
</HTML>


traducendolo così come lo vedo, io scriverei qualcosa come:
Codice: [Seleziona]
<HTML>
    <HEAD>
        <TITLE>Login using pasp</TITLE>
    </HEAD>
    <BODY>
        <H1>LOGIN FORM</H1>
        <% var myname: string; %>

        <%
        myname := pasp.session.getAttribute('username');
        if(myname <> '') then
             Writeln('Welcome ' + myname + ' <a href="logout.pasp" >Logout</a>")
        else
            begin
        %>
            <form action="checkLogin.pasp">
                <table>
                    <tr>
                        <td> Username  : </td><td> <input name="username" size=15 type="text" /> </td>
                    </tr>
                    <tr>
                        <td> Password  : </td><td> <input name="password" size=15 type="text" /> </td>
                    </tr>
                </table>
                <input type="submit" value="login" />
            </form>
        <%
            end;
        %>
    </BODY>
</HTML>

però girando per il web ho trovato anche un'altra sintassi che credo sia quella a cui si riferiva Stilgar quando diceva di usare XML con un parse:
Codice: [Seleziona]
<HTML>
    <HEAD>
        <TITLE>Login using pasp</TITLE>
    </HEAD>
    <BODY>
        <H1>LOGIN FORM</H1>
        <p:var myname: string; />
        <p:set myname := pasp.session.getAttribute('username'); />
        <p:if(myname <> '') then />
        <p:writeln('Welcome ' + myname + ' <a href="logout.pasp" >Logout</a>") />
        <p:else />
            <form action="checkLogin.pasp">
                <table>
                    <tr>
                        <td> Username  : </td><td> <input name="username" size=15 type="text" /> </td>
                    </tr>
                    <tr>
                        <td> Password  : </td><td> <input name="password" size=15 type="text" /> </td>
                    </tr>
                </table>
                <input type="submit" value="login" />
            </form>
        <p:end />
    </BODY>
</HTML>


ora: chi mi chiarisce come mai il jsp ha 2 sintassi?

poi, premesso che il preprocessore, qualunque sia la sintassi che scegliamo, deve generare qualcosa che l'interprete pascal script può eseguire,
secondo voi come scrivereste il codice sorgente psp?



Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:progetto web forum lazaruspascal.it
« Risposta #56 il: Gennaio 21, 2013, 10:11:24 pm »
allora iniziamo a provare da qua, ci ho lavorato un po' sopra ed è una base per andare avanti in varie direzioni.

si tratta di un progetto per console.
all'interno della root del progetto trovate una cartella (webpas) con uno script pronto all'uso.
una volta compilato correttamente il progetto lpitr (non c'è uno nome, sta per: lazaruspascal.it runtime :D) basta andare in una shell del dos e lanciarlo con:
Codice: [Seleziona]
lpitr.exe >index.html
produrrà un file da "navigare" col browser

cose da fare:
  • inserire un parametro per indicare lo script da lanciare(emh... ora la path è una costante nel codice :P)
  • vedere come si può usare una funzione tipo FormatDateTime senza dichiararla in OnUses (c'è il componente import date utils ma ancora non l'ho fatto funzionare)
  • salvare il compilato nella stessa cartella del sorgente con estensione .psp
  • far partire la compilazione solo quando il .pas ha il timestamp dell'ultima omdifica diverso dal .psp; se sono uguali non si compila ma si carica il .psp nell'executor
  • varie ed eventuali

Ho provato mi da errore in fase di compilazione su xubuntu a 32 bit:

lpitr.lpr(0,0) Fatal: Can not find unit uPSCompiler used by lpitr.
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:progetto web forum lazaruspascal.it
« Risposta #57 il: Gennaio 21, 2013, 11:32:34 pm »
in progetto -> opzioni -> percorsi (-Fu)
messa la path [...]/lazarus/components/pascalscript/source?
Imagination is more important than knowledge (A.Einstein)

aesis

  • Newbie
  • *
  • Post: 23
  • Karma: +0/-0
Re:progetto web forum lazaruspascal.it
« Risposta #58 il: Gennaio 22, 2013, 09:47:27 am »
Citazione

ora: chi mi chiarisce come mai il jsp ha 2 sintassi?

poi, premesso che il preprocessore, qualunque sia la sintassi che scegliamo, deve generare qualcosa che l'interprete pascal script può eseguire,
secondo voi come scrivereste il codice sorgente psp?

Non so...però mi sembra di aver capito che dalla versione 2.0 è supportato un tipo di sintassi diversa..."A primary feature of JSP technology version 2.0 is its support for an expression language (EL)"

rimando alla  JavaServer Pages Standard Tag Library - http://docs.oracle.com/javaee/5/tutorial/doc/bnakq.html

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3273
  • Karma: +12/-0
Re:progetto web forum lazaruspascal.it
« Risposta #59 il: Gennaio 22, 2013, 05:08:32 pm »
Ok no more, fatto. Carino, ma esattamente come pensi che da qui si possa estendere la cosa esattamente?!
Ieri è passato, domani è futuro, oggi è un dono...

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 117
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 106
Total: 106

Disclaimer:

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.