Italian community of Lazarus and Free Pascal

Altro => Pub => Topic aperto da: cappe - Agosto 10, 2025, 07:46:11 pm

Titolo: Errore 20xxxxxx
Inserito da: cappe - Agosto 10, 2025, 07:46:11 pm
FIno a qualche giorno mi veniva fuori un errore tipo 200706102  (il numero non ricordo bene), la cosa strana è che veniva fuori sono quando premevo run (F9) mentre se facevo la build funzionava tutto correttamente.
Quindi mi toccava ricompilare tutto ogni volta. Ho modificato il mio programma togliendo alcuni helper e ha preso a funzionare tutto correttamente anche con F9.
Titolo: Re:Errore 20xxxxxx
Inserito da: DragoRosso - Agosto 10, 2025, 10:40:57 pm
Il problema viene riportato molte volte nel forum internazionale.

Essenzialmente il problema sembra esistere quando si fanno modifiche a file non inclusi nel progetto, cioè file richiamati solo nelle uses delle varie unità.

Il compilatore nonsi accorge che questi file sono stati cambiati e non li ricompila, così si generano poi questi errori o a runtime o addirittura durante il linking.

Soluzioni non pare che ce ne siano.

Io ritengo ciò abbastanza critico, perchè finchè vengono generati errori immediati si può porre rimedio ma se questi errori venogno generati a runtime in maniera casuale e non ripetitiva ... chi và a pensare che basta rigenerare la build.
Titolo: Re:Errore 20xxxxxx
Inserito da: DragoRosso - Agosto 10, 2025, 11:05:04 pm
Ovviamente ciò vale anche al contrario: io faccio una mofica ad un file (Unita UNO) e questo file viene usato in un altro file (UNITA DUE) non incluso nel progetto, bhè ovviamente quest'ultimo file non verrà compilato con le nuove modifiche.
Quindi se io uso UNITA DUE incluso nelle uses in una qualche mia unità, UNITA DUE potrebbe essere disallineata, anche se non è mai stata modificata.
Titolo: Re:Errore 20xxxxxx
Inserito da: cappe - Agosto 11, 2025, 07:59:33 am
Il problema viene riportato molte volte nel forum internazionale.

Essenzialmente il problema sembra esistere quando si fanno modifiche a file non inclusi nel progetto, cioè file richiamati solo nelle uses delle varie unità.

Il compilatore nonsi accorge che questi file sono stati cambiati e non li ricompila, così si generano poi questi errori o a runtime o addirittura durante il linking.

Soluzioni non pare che ce ne siano.

Io ritengo ciò abbastanza critico, perchè finchè vengono generati errori immediati si può porre rimedio ma se questi errori venogno generati a runtime in maniera casuale e non ripetitiva ... chi và a pensare che basta rigenerare la build.

Se non ho capito male quello che hai detto, il problema che la build bisognava rigenerarla ad ogni compilazione.

Perciò la sintesi, se vi capita, provate a togliere qualche helper finchè non verrà sistemato il bug. Penso sia un bug perchè se funziona con Build e non con Run c'è un bug.
Titolo: Re:Errore 20xxxxxx
Inserito da: DragoRosso - Agosto 11, 2025, 10:26:35 am
Se non ho capito male quello che hai detto, il problema che la build bisognava rigenerarla ad ogni compilazione.
Perciò la sintesi, se vi capita, provate a togliere qualche helper finchè non verrà sistemato il bug. Penso sia un bug perchè se funziona con Build e non con Run c'è un bug.

Per essere un bug è un bug. Diciamo che è un bug noto e che in questo momento non c'è soluzione. L'unica soluzione è inserire tutti i file che possono essere interessati a modifiche nel progetto in modo che il compilatore possa verificarlo ad ogni "run" (vengono usate tecniche di caching e di verifica delle date sui file).

Potrebbe anche essere che nella versione "trunk" cioè quella sperimentale sia già stato risolto in una qualche maniera.

Non interessa solo gli Helper (che sono normalmente inseriti nelle uses ma non nel progetto) ma acnhe tutta una schiera di ulteriori file (e come accennavo il problema è più complesso in progetti "voluminosi").

Ciò non interessa solo FPC ma anche Delphi. In Delphi l'unico vantaggio è che puoi fare il build ogni volta perchè il compilatore è velocissimoe quindi non devi attendere "il caffe" per poi far girare l'applicazione.

Da parte mia eseguo sempre una BUILD (anzi una doppia BUILD) quando testo qualcosa con modifiche importanti a più file (SOPRATTUTTO QUANDO CI SONO DI MEZZO {$IFDEF ...}).
Titolo: Re:Errore 20xxxxxx
Inserito da: DragoRosso - Agosto 11, 2025, 11:02:14 am
Ulteriore consiglio: nei miei progetti il percorso "lib" di progetto, ossia dove il compilatore mette il file compilati (cioè i .ppu, .o, etc...) temporanei (che venogno però usati per la validazione di una eventuale compilazione aggiuntiva) io c'è l'ho su un RAMDISK.

Perchè ho ciò: perchè sono certo che dopo ogni accensione del PC qualunque cosa io usi verrà ricompilata indipendentemente dal fatto che sia stata modificata o meno.
Inoltre, con una semplicissima cancellazione del disco forza la ricompilazione di tutto in un qualsiasi momento, indipendentemente dal RUN o dal BUILD.

E inoltre non uso mai le librerie precompilate dei componenti di terze parti (anche di quelle poche cho ho comprato) ma uso sempre la ricompilazione a sorgente. Ciò significa che ogni qualvolta eseguo una BUILD di un qualsiasi progetto, tutti i sorgenti (eccetto quelli bundle) verranno ricompilati per quello specifico progetto.
Titolo: Re:Errore 20xxxxxx
Inserito da: cappe - Agosto 11, 2025, 03:23:32 pm
Terrò conto
Titolo: Re:Errore 20xxxxxx
Inserito da: bonmario - Agosto 11, 2025, 06:10:02 pm
Ulteriore consiglio: nei miei progetti il percorso "lib" di progetto, ossia dove il compilatore mette il file compilati (cioè i .ppu, .o, etc...) temporanei (che venogno però usati per la validazione di una eventuale compilazione aggiuntiva) io c'è l'ho su un RAMDISK.

Avevo notato qualcosa fin da quando ho iniziato ad usare Lazarus, intorno al 2007.
Mi sono fato un programmino che, a comando ed all'avvio del PC, cancella tutti quei files !!!