Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: tito_livio - Febbraio 11, 2023, 03:37:07 pm

Titolo: [Risolto] Lazreport su Lazarus 2.2.4
Inserito da: tito_livio - Febbraio 11, 2023, 03:37:07 pm
Salve a tutti,
finalmente e dopo tre anni sto aggiornando la mia versione di Lazarus per Windows, passando dalla 2.0.6 a 32 bit alla 2.2.4 e ho installato le versioni 32 e 64 bit ognuna su di un PC.
Su entrambe le versioni, sembra che tutto vada bene, quasi tutto, ma c'è un problema con il Lazreport che non riesco a risolvere.
Premetto che Lazreport sembra che sia stato migliorato, infatti su entrambe le versioni la preparazione delle stampe impiega circa la metà del tempo e su stampe di 300-400 pagine fa comodo.
Solo su 3 stampe su circa 50, al momento della stampa appare la schermata di anteprima, un messaggio d'errore che dura pochissimo e poi il programma si chiude.
Il messaggio d'errore riporta: "Invalid floating point operation. Press OK to ignore and risk data corruption. Press abort to kill the program."
Non ci sono calcoli in virgola mobile necessari per la stampa, un report poi stampa una sola pagina con alcune stringhe e un barcode 2d.
Ho provato a sostituire il componente (tFrReport) e rifare la stampa sul nuovo ambiente di sviluppo, senza risolvere;
Ho sostituito la stampa (il file .lrf) con una stampa di una pagina sola con la scritta "ciao", senza l'uso di variabili, anche in questo caso senza risolvere.
Non posso riportare un progettino di esempio perché le stampe lì funzionano.
C'è qualcuno che ha un'idea?
Grazie anticipatamente a tutti.
Ciao.
Titolo: Re:Lazreport su Lazarus 2.2.4
Inserito da: DragoRosso - Febbraio 13, 2023, 11:40:03 am
Visto che hai l'ambiente sia a 32 che a 64 bit, il problema si verifica in entrambi gli ambienti (ossia compilato per 32  o 64 bit) ?

LazReport è di fatto la versione free di FastReport. Prova a cercare anche nel loro forum se qualcuno ha avuto queste problematiche.

Certo che se anche senza stampa effettiva genera quell'errore ... sarà un bella gatta da pelare risolvere.

Prova a mascherare le eccezioni: l'errore verrà gestito fornendo un valore più adatto alla situazione (tipo infinito, nan, ...).
Codice: [Seleziona]
    //Questo vale per il 64 bit
    SetExceptionMask ([exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]);

   //Questo vale per il 32 bit
   Set8087CW($27f);

Ciao
Titolo: Re:Lazreport su Lazarus 2.2.4
Inserito da: tito_livio - Febbraio 13, 2023, 03:18:38 pm
Ciao DragoRosso grazie per la risposta.
Si, il problema si verifica sia nella versione a 32 che nella versione a 64 bit.
In effetti ho cercato in giro come Lazreport e non come Fastreport, non ci avevo pensato.
Proverò anche con la mascheratura delle eccezioni.
Speriamo bene,
ciao.
Titolo: Re:Lazreport su Lazarus 2.2.4
Inserito da: tito_livio - Febbraio 14, 2023, 09:08:50 pm
Allora, posso dire che ho risolto.
Il problema è che LazReport nella vecchia versione era molto tollerante sulla impostazione della dimensione della pagina.
Nella vecchia versione infatti LazReport prendeva la dimensione della pagina dalla stampante indicata nelle opzioni e se la memorizzava chissà dove.
Impostare le dimensioni a mano non serviva a niente.
Nella nuova versione invece le dimensioni del foglio le vuole specificate nelle opzioni pagina, pena la chiusura dell'applicazione.
Dovendo stampare delle etichette, dove c'è quindi da gestire formati pagina diversi dal solito A4, era quindi inevitabile incontrare questo problema.
Riporto due immagini per chiarire meglio, spero che il tutto possa essere d'aiuto a qualcuno.
Ciao a tutti.
Titolo: Re:[Risolto] Lazreport su Lazarus 2.2.4
Inserito da: Mimmo - Febbraio 15, 2023, 09:35:46 am
Grazie per le info!
Titolo: Re:[Risolto] Lazreport su Lazarus 2.2.4
Inserito da: DragoRosso - Febbraio 15, 2023, 09:56:01 am
Odio profondo quando i componenti non usano i "default" nei campi che possono inficiarne l'uso .....  >:( >:( >:(

Spero sia solo una "svista" degli sviluppatori legata ai cambi di versione ...

Ciao