91
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da petrusic il Marzo 29, 2024, 09:29:40 am »E più "vai avanti" con la programmazione, che diventa più complessa, e più pazienza ci vuole.Tutta la pazienza che un vecchio programmatore, come me può mettere, ha sempre un limite e stare una settimana appresso ad un problema legato ad una scelta non necessitata, diventa pesante ed ha superato ogni limite di sopportazione.
Quando c'è un problema, o presunto tale, occorre munirsi di santa pazienza e pian piano procedere alla ricerca della causa, senza però mettere in atto cambiamenti radicali.
Mi sarebbe piaciuto modificare il nome mnmonico della Form per intuirne al molo lo scopo nel futuro, quando avessi bisogno di sfruttarne l'utilizzo in altri programmi, ma credo di non avere ancora capito qualche meccanismo nell'ingranaggio logico dell'impiego di una Form.
Citazione da: DragoRosso
Alle volte, come hai fatto, però ricostruire una data "cosa" da zero è una soluzione efficacie.Anche tu mi fai presente una peculiarità di Linux che ho appreso ed assimilato venti anni fa. Questa riflessione nei miei confronti è alquanto irrispettosa. Vi salva soltanto il fatto di non conoscere la persona con la qualke state dialogando.
Sotto Linux tieni presente, come accennavano altri partecipanti al topic, che maiuscolo / minuscolo vengono gestiti in maniera differenziata e che quando si fanno delle operazioni di "RIDENOMINAZIONE" si possono avere effetti collaterali non indifferenti.
Citazione da: DragoRosso
Banalmente quando salvi una UNIT con la sua FORM, o li rinomini, una scrittura del nomefile con maiuscolo / minuscolo non corretto e non conforme a quanto inserito nelle uses (a mano) può generare problemi come quelli che hai verificato tu.Ecco, questo concetto è sicuramente prezioso, perchè formativo e ti ringrazio moltissimo.
Ciò a maggior ragione se magari rimane qualche "rimasuglio" di file compilato (tipo .o oppure .ppu) che corrisponde a quanto erratamente ancora presente nelle uses.
Sinceramente non sò il compilatore di FPC come si comporta precisamente, ma tutti i compilatori usano dei meccanismi di "hashing"e di cache basati molto spesso sulle date di modifica dei file per velocizzare la compilazione, per cui quando si rinomina una unità potrebbe essere che rimangano i file vecchi compilati (che non vengono cancellati perche il sorgente non esiste più e quindi il compilatore non sà nemmeno che esiste il vecchio compilato) che se richiamati dal programma generano errori.
In pratica, quando tu inserisci il nome di una unit nelle USES, il compilatore cerca o il file .PAS o il file .PP o il file .PPU (poi ovviamente c'è anche tutta una serie di file collegati ...). Se non esistono file .PAS o .PP ma solo il .PPU e per il compilatore il file è valido, questo viene usato. E il .PPU senza .PAS (riferiti a file del tuo progetto, non a quelli di sistema o di altri di terze parti) è molto probabile che sia un residuo che ti darà quei problemi.
Spero di avere chiarito la probabile situazione in cui ti sei venuto a trovare (e non sei solo).