Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: Avogadro - Novembre 24, 2017, 04:53:03 am
-
Sto avendo un problema inaspettato che mi sta mettendo in crisi su un progetto sulle carte di controllo.
In breve ; devo fare dei grafici e sto usando i componenti Chart presenti nell' IDE; i grafici non sono nulla di particolare: devono mostrare l'andamento temporale (trend) di una serie di dati .
Ho messo a punto i grafici a suo tempo e non li ho piu' toccati; a run time hanno sempre funzionano egregiamente e non li ho piu' toccati dalla prima versione (nel tempo pero' ho usato versioni successive di lazarus) .
Adesso il cliente mi ha chiesto una modifica ma a design time Lazarus va in crash quando seleziono i componenti Chart1, Chart2 e Chart3
Il fenomeno è descritto qui
http://wiki.freepascal.org/TAChart_Tutorial:_ListChartSource,_Logarithmic_Axis,_Fitting
alla voce TChartTransformations and LogarithmicAxisTransform
Io non faccio nessuna trasformazione ma l' errore è quello ("range ceck error") e manda in crash tutto.
In pratica non posso piu' mettere mano ai grafici a design time, un bel guaio da cui non so come uscirne perché la situzione è quella descritta dal link ma il punto adesso è come sanare questa situazione ?
Ossia come mettere mano ad esempio a chart1 senza che si crei l' eccezione "range ceck error" a design time ? Si puo' intervenire da qualche parte con un editor di testo nei codici sorgenti ?
Grazie anticipate a chi mi puo' aiutare a uscirne .
Saluti.
-
Ciao Avogadro, putroppo senza poter replicare l'errore non so come aiutarti. Non riesci a farci un piccolo sorgente che esegue l'errore e noi proviamo a capire come mai?!
-
visto che si tratta di un problema a design-time, è fattibile che ti crei tutti i componenti a runtime?
-
Si, è fattibile creare i componenti a run time, anzi, a mio avviso è auspicabile (in fondo il Pascal è stato creato anche per questo, un "oggetto" lo si crea e lo si usa solo quando serve, poi lo si "cancella") .
Ho scelto di creare i compoenti a design time solo per semplicità ( e per "effeto ancoraggio" al vecchio e caro fortran che girava sul vax - bei tempi quando bastavano un po' di asterischi sul modulo continuo- ) .
Sono appena tornato da un convegno apputo sulle carte di controllo, mi metto all'opera e vedo se ne riesco ad uscirne .
Per il codice sorgenet: tolgo alcune loghi e vedo di postarlo - ha bisogno di zeoslib e di fortes report-.
Ciao a tutti.
-
Misteri dell' informatica: ho preso una copia di backup dell'applicazione e a run time il problema non c'è.
Ho usato lazarus 1.8.0RC5 a 32 bit (l' errore lo dava su un altro pc, dove avevo installato una versione di lazarus a 64 bit).
In verità la copia che non andava era su una pen drive che avevo usato per un corso sulle carte di controllo.
Ora non so da cosa possa mai dipendere ma vedo un attimo vacillare lo slogan di lazarus "compila ovunque", non è proprio così (in verità compilare ovunque lo stesso codice sorgente è un problema che esiste da sempre nell' informatica: tornando al caro vecchio fortran non era detto che passando ad esempio da vax al cray tutto andasse sempre liscio) .
Dovro' passare un buon antivirus alla pen drive giusto per prevenire
Meglio così, che ho risolto con una copia di backup, mi era vunuto un mal di testa al solo pensiero di dover rifare i grafici.
Rimane sempre il mistero di cosa possa essere mai successo (la vecchia cara pen drive mi sta per lasciare ? ) .
-
Possibile che i grafici usino interi e puntatori mescolandoli.
Da qui l'errore che ti dava a 64bit.
😊
-
E' l' ipotesi piu' plausibile.
Ciao