* * * *

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 25, 2024, 11:43:40 pm

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

56 Visitatori, 1 Utente
 

Autore Topic: Creare una web application con lazarus  (Letto 172 volte)

suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Creare una web application con lazarus
« il: Novembre 23, 2024, 02:27:12 pm »
Ciao,,
ho letto l'articolo https://blog.lazaruspascal.it/2023/12/21/creare-una-web-application-con-lazarus/
Ho scaricato il progetto su https://github.com/XinYiMan/LazWebServer.git.
Quando, per vedere come funziona, ho lanciato il progetto ed aperto sul browser l'url http://localhost:5555/index lazarus va in errore: https://www.dropbox.com/scl/fi/roregm8fqtne2ynch605q/laz_error.jpg?rlkey=zwdcvif5culjsynccskyasqgu&dl=0

Vorrei capire cosa devo fare per farlo funzionare correttamente! Vorrei studiare  l'esempio. Grazie
Credo abbia ottime potenzialità questa funzionalità.
Con Lazarus sono alle prime armi.
Grazie in anticipo

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3278
  • Karma: +12/-0
Re:Creare una web application con lazarus
« Risposta #1 il: Novembre 23, 2024, 04:31:44 pm »
Ciao, mi fa piacere che quel codice possa essere di spunto per qualcuno. Prima cosa, che sistema operativo usi per compilare? Seconda cosa. Prova a compilarlo e a lanciarlo da shell/terminale e vedi se così il problema si presenta.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3278
  • Karma: +12/-0
Re:Creare una web application con lazarus
« Risposta #2 il: Novembre 23, 2024, 04:34:08 pm »
La custom option -dSmartDebugLogWriteActive farà stampare sulla console le eccezioni così puoi vedere cosa capita
Ieri è passato, domani è futuro, oggi è un dono...

suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Creare una web application con lazarus
« Risposta #3 il: Novembre 23, 2024, 09:33:32 pm »
Ciao, sto usando Windows10. Se lo compilo e lo lancio funziona regolarmente senza dare errori.
La custom option -dSmartDebugLogWriteActive è attivata, ma non vedo cenno di errori sulla console.
 

suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Creare una web application con lazarus
« Risposta #4 il: Novembre 24, 2024, 10:21:36 am »
Ho installato lazarus su linux Mint. Apro il progetto, lo mando in esecuzione, non mi apre la console. Vado sul browser http://localhost:5555/index.
Lazarus va in errore:
"Project lazwebserver raised exception class 'RunError (232)' with message:
Threads not supported
At address 4185F0

Non è un buon inizio con Lazarus.

Avete qualche consiglio per me?
Grazie


DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1405
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Creare una web application con lazarus
« Risposta #5 il: Novembre 24, 2024, 10:28:33 am »
Apri dal menu Progetto "Analizzatore progetti", avrai un elenco di file tra cui un file con suffisso LPR.

Aprilo.

La struttura è qualcosa di simile: Verifica che ci sia l'$IFDEF con UNIX (e se non c'è inseriscilo).

Codice: [Seleziona]
program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  {$IFDEF HASAMIGA}
  athreads,
  {$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, unit1
  { you can add units after this };

{$R *.res}

begin
  RequireDerivedFormResource:=True;
  Application.Scaled:=True;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Creare una web application con lazarus
« Risposta #6 il: Novembre 24, 2024, 06:49:44 pm »
Trovato,

la struttura che c'è è questa:


Codice: [Seleziona]
program lazwebserver;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  {$IFDEF OpenSslOk}
  opensslsockets,
  {$ENDIF}
  fphttpapp, HTTPDefs, fphttp, Classes, sysutils, uControl, uSmartDebugLog, uCustomException,
  uCustomGetModule, uCookieManagement, uConsts, uJWTAbstract;     

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3278
  • Karma: +12/-0
Re:Creare una web application con lazarus
« Risposta #7 il: Oggi alle 08:28:11 am »
Verifica se tra le custom options hai

-dUseCThreads

Altrimenti se non c'è mettilo a mano
Ieri è passato, domani è futuro, oggi è un dono...

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1405
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Creare una web application con lazarus
« Risposta #8 il: Oggi alle 09:49:08 am »
Questa "cosa" dei CThreads è sempre stata un mistero per me. E' una libreria alternativa ai PThreads (che mi pare sia la libreria nativa e originale dei sistemi Linux).

Perchè FPC non la "wrappa" nei TThreads classici stile Windows ? Almeno uno si toglie il pensiero e usa di fatto una sola classe.

Poi magari differiranno su particolari d'uso, ma si avrebbe una sola classe integrata in FPC (FPC stesso penso usi i Thread anche in Linux internamente per alcune operazioni ...), senza necessità di Uses "strane".

Bhò, misteri dell'informatica.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Creare una web application con lazarus
« Risposta #9 il: Oggi alle 05:30:11 pm »
Verifica se tra le custom options hai

-dUseCThreads

Altrimenti se non c'è mettilo a mano

Stai parlando per linux o per windows? Io non riesco a farlo andare ne in un ambiente ne nell'altro.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3278
  • Karma: +12/-0
Re:Creare una web application con lazarus
« Risposta #10 il: Oggi alle 05:35:39 pm »
Verifica se tra le custom options hai

-dUseCThreads

Altrimenti se non c'è mettilo a mano

Stai parlando per linux o per windows? Io non riesco a farlo andare ne in un ambiente ne nell'altro.

Parlo di linux.

Ma scusa su windows hai detto che compilando ed eseguendo funziona. Giusto?
Dall'ide saltano fuori delle eccezioni che da eseguibile vengono gestite per la normale operatività. Oltre al fatto che per natura debuggare roba che funziona in multithread è ostico concettualmente.
Ieri è passato, domani è futuro, oggi è un dono...

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1405
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Creare una web application con lazarus
« Risposta #11 il: Oggi alle 06:42:25 pm »
Facciamo un attimo il punto:

1) Build sotto Windows e lancio senza debugger: funziona il progetto ?

2) Build sotto Linux e  lancio senza debugger: funziona il progetto ?

Puoi eliminare il "{$IFDEF UseCThreads}" e il corrispondente "{$ENDIF}" senza problemi. Puoi sempre eventualmente reinserirlo.

Usare il debugger su applicazioni di questo tipo come accennava @xinyiman è problematico. Se vuoi farlo devi incominciare a selezionare "Non Mostrare più" quando ti compare una eccezione fino a quando non ti gira tutto senza eccezioni, e poi puoi impostare i tuoi breakpoint dovi ti interessano.

Facci sapere.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Creare una web application con lazarus
« Risposta #12 il: Oggi alle 07:02:40 pm »
Citazione
1) Build sotto Windows e lancio senza debugger: funziona il progetto ?

Si funziona

Citazione
1) Build sotto Linux e  lancio senza debugger: funziona il progetto ?

No non funziona, non sia apre neanche la console.

Citazione
Usare il debugger su applicazioni di questo tipo come accennava @xinyiman è problematico. Se vuoi farlo devi incominciare a selezionare "Non Mostrare più" quando ti compare una eccezione fino a quando non ti gira tutto senza eccezioni, e poi puoi impostare i tuoi breakpoint dovi ti interessano.

Non riesco a capire come faccio a scrivere un sw senza fare il debug. Si tratta di un piccolo esempio figuriamoci se il progetto si ingrandisce tanto. Sono partito molti anni fa con VB6 e poi con Xojo (un compilatore multi piattaforma), ed ho sempre fatto il debug anche di progetti grossi. Non riesco a capire come potrei fare senza. Chiedo scusa ma davvero con Lazarus sono alle prime armi e stò valutando se può essere uno strumento che io possa usare o sia in grado di usare.

Grazie






suibaf

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Creare una web application con lazarus
« Risposta #13 il: Oggi alle 07:10:19 pm »
Perchè questa applicazione deve lavorare in multithread?

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1405
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Creare una web application con lazarus
« Risposta #14 il: Oggi alle 09:38:33 pm »
Non riesco a capire come faccio a scrivere un sw senza fare il debug. Si tratta di un piccolo esempio figuriamoci se il progetto si ingrandisce tanto. Sono partito molti anni fa con VB6 e poi con Xojo (un compilatore multi piattaforma), ed ho sempre fatto il debug anche di progetti grossi. Non riesco a capire come potrei fare senza. Chiedo scusa ma davvero con Lazarus sono alle prime armi e stò valutando se può essere uno strumento che io possa usare o sia in grado di usare.
Perchè questa applicazione deve lavorare in multithread?

Non è un problema di debugging. E' un problema di gestione delle eccezioni. Essenzialmente  una applicazione WEB genera una serie di eccezioni gestite a runtime e quindi se la debugghi ti troverai il processo interrotto abbastanza spesso. Questo tipo di applicazione genera eccezioni per vari motivi: tentativi di criptatura e decriptatura errati (ad esempio se si usa TLS), timeout sui pacchetti TCP e poi per anche per come è stata costruita (alcune eccezioni vengono usate per "inviare" lo stato di una data situazione ad esempio).

E' un pò come accadeva nel passato quando la gestione della aritmetica poteva essere fatta o da processore o in simulazione (in quei casi le eccezioni erano gestite in modo che non potessero essere bloccate dai software di debug).

Comunque si può fare gestendo le "cose" come ti avevo accennato in un precedente post.

Sul perchè è multithreading: perchè lavorando in termini di rete deve esserlo per non bloccare l'interfaccia utente   (o il resto dei processi di un web server).

Prova ad immaginare un programma in attesa di un input da una "pagina web" ad esempio di scarico di un file. Se non fosse multithreading, finchè il file non viene inviato il web server sarebbe "inchiodato".

Su Linux purtroppo non sono ferrato a sufficienza. Posso però dirti che mentre la console in Windows la si ottiene semplicemente con le opzioni del progetto (quindi senza nessau intervento del programma), in Linux non mi pare si possa fare ciò, quindi è probabile che tu debba lanciare il programma direttamente da terminale (forse è proprio questo il problema).

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19198
  • Topic in totale: 2289
  • Online Today: 68
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 56
Total: 57

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.