* * * *

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 21, 2024, 05:17:05 pm

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

87 Visitatori, 0 Utenti

Autore Topic: [Risolto] Run Error (216) - General protection fault  (Letto 73454 volte)

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:Run Error (216) - General protection fault
« Risposta #15 il: Marzo 26, 2024, 06:33:33 pm »
Guardando il codice mi sembra manchi la properties msg alla form di attesa.

Si, con tutte le prove ed i tentativi fatti per aggiungere una Form di Attesa, ho cancellato il campo msg. Ora l'ho ripristinato, ma non cambia niente.
Citazione da: Stilgar
L'errore sembra dovuto a file residui sul disco.
Suggerisco di cancellare qualche .o e .pp e riprovare la compilazione.

Ma così, a caso?

Ho dato una guardata alla directory relativa ai file.o ed visto una marea di file. Andare ad individuare quelli giusti mi sembra un'impresa. Così, a polso, potrei cancellare
Citazione
/home/petrus/.lazarus/units/x86_64-linux/gtk2/componentpalette_options.o
/home/petrus/.lazarus/units/x86_64-linux/gtk2/componentpalette.o
/home/petrus/.lazarus/units/x86_64-linux/gtk2/componentlist.o

mentre degli innumerevoli file.pp trovasti quelli che mi sembrano strettamente legati a Lazarus sono
Citazione
/usr/share/lazarus/2.2.6/components/fpreport/design/fpreportdesignreportdata.pp
/usr/share/lazarus/2.2.6/components/fpreport/design/fpreportdesignobjectlist.pp
/usr/share/lazarus/2.2.6/components/fpreport/design/fpreportdesigner.pp
/usr/share/lazarus/2.2.6/components/fpreport/design/fpreportdesignctrl.pp

Purtroppo, per la mia scarsa conoscenza di Lazarus, non mi sento di avventurarmi ad intraprendere percorsi a me assolutamente ignoti.
ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Run Error (216) - General protection fault
« Risposta #16 il: Marzo 26, 2024, 06:40:03 pm »
Pardon .. non PP ma PPU, mi son perso una lettere mentre scrivevo.
Ad occhio e croce pp sono i sorgenti. (uso .pas come estensione, per abitudine).
Eventualmente Lazarus permette di fare la "clean up and build" da menu.
Così non si incorre in errori di cancellazione.
Si presenta una finestra di conferma (così si vede cosa verrà pulito e ricompilato)


Fa tutto Lazarus.


Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Run Error (216) - General protection fault
« Risposta #17 il: Marzo 26, 2024, 07:05:13 pm »
@slapshot
[/size]
Pompa dei messaggi è il mio modo di descrivere il meccanismo che permette di inviare messaggi alle applicazioni.
Come sistema operativo e anche come applicazione.


Il sistema operativo conosce le finestre che ha visibili.
Se nascondi tutte le finestre e liberi il desktop, poi selezioni l'applicazione che ti interessa, il sistema operativo manda dei messaggi per riattivare le finestre che devono essere visualizzate.
Lazarus rimappa questi messaggi, nel caso d'esempio LM_SHOW (vado a memoria, potrei ricordare male la costante)
Internamente viene fatto il routing del messaggio verso la finestra interessate che riceva il messaggio. TForm gestiste tutto questo in modo trasparente.
Se crei la finestra fuori dal contesto applicativo, hai si la form attiva e visibile, ma in caso di "Update" o metodi legati ai messaggi da so/app, potresti avere comportamenti non attesi. Devi controllare tutto tu. Anche l'aggiornamento.


E' corretto, lecito e intelligente, non creare 150 form, di cui al massimo solo 1 o due sono attive contemporaneamente, 150 sono veramente tante. Basta creare e distruggere in modo corretto le istanze. Stiamo parlando di un caso limite però.


Lazarus creata di default tutte le form. Quando crei una nuova form dal designer, aggiunge il codice per la creazione. Il pattern comportamentale proposto è questo.


Le TForm sono classi "particolari" che hanno bisogno di qualche attenzione in più.  ;)


Il design a messaggi, è utilizzato anche da SDL (videogiochi/multimediale). Giusto per non sembrare Winzozo oriented.


Stilgar.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:Run Error (216) - General protection fault
« Risposta #18 il: Marzo 26, 2024, 07:06:29 pm »
Eventualmente Lazarus permette di fare la "clean up and build" da menu.
Così non si incorre in errori di cancellazione.
Si presenta una finestra di conferma (così si vede cosa verrà pulito e ricompilato)
Fa tutto Lazarus.

Purtroppo non riesco a seguirti al volo.

Se ho capito bene la tua indicazione, il menù di cui parli è quello riportato come allegato, solo che lì dentro i file .o e .ppu non sono riportati secondo la propria dipendenza dal progetto principale, quindi io potrei soltanto cancellare gli unici file che riesco a riconoscere (frmattesa.o e frmattesa.ppu).

ciao ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Run Error (216) - General protection fault
« Risposta #19 il: Marzo 26, 2024, 07:12:20 pm »
Volendo potresti cancellare solo quei due file.
Se il compilatore ti indica form8 e quella variabile non esiste più, magari è un'altra la unit che non viene aggiornata. Per il "refactory" in genere si usa il Crtl+Shift+E . Ci pensa lazarus a cambiare i nomi delle classi/variabili per te e le dovrebbe modificare tutte. Uso "dovrebbe" perché ogni tanto mi scazza.
Prendi i file intermedi (o e ppu) e cancellali tutti. Così sei sicuro che non ci siano problemi.
Tanto il compilatore li ricrea in poco tempo.


Giusto per fare la prova.


Stilgar.



Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:Run Error (216) - General protection fault
« Risposta #20 il: Marzo 27, 2024, 05:20:36 pm »
Volendo potresti cancellare solo quei due file.
Se il compilatore ti indica form8 e quella variabile non esiste più, magari è un'altra la unit che non viene aggiornata. Per il "refactory" in genere si usa il Crtl+Shift+E . Ci pensa lazarus a cambiare i nomi delle classi/variabili per te e le dovrebbe modificare tutte.

Non ho eseguito il Crtl+Shift+E, perchè ho capito  che quello si occupa solamente della ricostruzione, mentre io dovevo ripulire e ricostruire.

Sono entrato dall'IDE in Esegui -> Ripulire e costruire e dentro le finestre "Cartelle sorgenti del pacchetto" ho selezionato solamente "*.ppu;*.o;", quindi ho premuto il pulsante "Ripulisci e Costruisci".

dopo la ricostruzione è partita in automatico la compilazione e:
L'Errore sulla Form8 è scomparso, mentre erano rimasti gli altri.

Guardando meglio dentro la Form9, in cui si trovano le righe:
Codice: [Seleziona]
  Application.CreateForm(TFormAttendi, FormAttendi);
  FormAttendi.msg:= 'Ricerca   MOVIMENTI AMMORTIZZABILI  in corso' + lineending + lineending + '-----  A T T E N D I  -----';
  FormAttendi.Show; 

e mi sono accorto che fra gli uses mancava il nome del file FrmAttendi. Ho provveduto allora ad inserirlo ed a ricompilare.

La compilazione si è completata senza errori. Ora, però è l'esecuzione a segnalare un Errore, quello riportato come allegato.

Sembra che debba usare il costruttore CreateNew, ma io non trovato niente del genere.
ciao ciao

slapshot

  • Jr. Member
  • **
  • Post: 89
  • Karma: +1/-0
Re:Run Error (216) - General protection fault
« Risposta #21 il: Marzo 27, 2024, 05:53:30 pm »
Probabilmente ha sempre a che fare con le risorse della form:
Citazione
TCustomForm.Create raises an exception if resource is not found
Reason: Each form created by the IDE should have a resource, so if resource is not found there is something wrong with either a resource or the unit which contains the faulty form. Therefore the application should inform the developer that the form can't function correctly without the resource. This change is also Delphi compatible and compatible with TFrame and TDataModule components.
Remedy: If you need a resourceless form you have 3 options:
Create a TForm class (not a descendant)
Construct your form using the CreateNew() constructor.
It is also possible to disable the exception by setting the global variable RequireDerivedFormResource to False.

Prelevato da qui: https://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#TCustomForm.Create_raises_an_exception_if_resource_is_not_found:

Però a questo punto cercherei di mettere ordine nel progetto e nel numero delle form e unit da usare.

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:Run Error (216) - General protection fault
« Risposta #22 il: Marzo 27, 2024, 05:55:39 pm »
Niente da fare. NON funziona!

Ho chiuso Lazarus  e poi ho riavviato.

L'Errore sulla Form8 è ricomparso.
 ???:o
ciao ciao

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Run Error (216) - General protection fault
« Risposta #23 il: Marzo 27, 2024, 05:59:58 pm »
nel messaggio di errore c'è scritto che non trova il file .lfm di quel form
puoi verificare la presenza?
Imagination is more important than knowledge (A.Einstein)

slapshot

  • Jr. Member
  • **
  • Post: 89
  • Karma: +1/-0
Re:Run Error (216) - General protection fault
« Risposta #24 il: Marzo 27, 2024, 06:21:01 pm »
Niente da fare. NON funziona!

Ho chiuso Lazarus  e poi ho riavviato.

L'Errore sulla Form8 è ricomparso.
 ???:o

Ci fai anche uno screenshot della dir dove sono contenuti i file di unit ed i relativi .lfm ? Ricordati che sotto Linux c'è differenza tra maiuscole e minuscole, probabilmente deve essere un problema del genere. Se disegni la form tramite la IDE di Lazarus, necessariamente deve esserci il .lfm .

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:Run Error (216) - General protection fault
« Risposta #25 il: Marzo 27, 2024, 10:36:55 pm »
nel messaggio di errore c'è scritto che non trova il file .lfm di quel form
puoi verificare la presenza?
Mi dispiace, ma non sono più in condizione di farlo. Ho eliminato tutto ed ho ricreato la Form8 come default.
Chiedo vivamente scusa a tutti, ma mi sono ... stancato.
Va bene così.
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1395
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Run Error (216) - General protection fault
« Risposta #26 il: Marzo 28, 2024, 12:18:11 pm »
.... ma mi sono ... stancato.
Non prendertela, ci vuole molta pazienza per programmare.

E più "vai avanti" con la programmazione, che diventa più complessa, e più pazienza ci vuole.
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.

Alle volte, come hai fatto, però ricostruire una data "cosa" da zero è una soluzione efficacie.
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 (ma d'altronde anche in Windows se si rinominano file con nomi simili ... e si dimentica qualche vecchio nome in qualche uses ...).

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.

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).


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

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:Run Error (216) - General protection fault
« Risposta #27 il: Marzo 29, 2024, 09:29:40 am »
E più "vai avanti" con la programmazione, che diventa più complessa, e più pazienza ci vuole.
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.
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.

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.
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.
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.

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.
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).
Ecco, questo concetto è sicuramente prezioso, perchè formativo e ti ringrazio moltissimo.
 :)
ciao ciao

slapshot

  • Jr. Member
  • **
  • Post: 89
  • Karma: +1/-0
Re:Run Error (216) - General protection fault
« Risposta #28 il: Marzo 29, 2024, 10:02:27 am »
Citazione
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.

Ciao, non devi prendertela per questo. Dietro un forum siamo tutti più o meno sconosciuti, i nostri background sono relativi e, a volte, le cose più semplici sono quelle che sfuggono, proprio come modificare il nome delle form da Lazarus. Facendolo da terminale, magari, sarebbe stato più lampante. Oppure il file .res che non si trova più ecc..


DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1395
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Run Error (216) - General protection fault
« Risposta #29 il: Marzo 29, 2024, 10:33:43 am »
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.
Non era mia intenzione offenderti o essere irrispettoso in alcun modo. Ciò che ho commentato è a favore di chiunque legga, altrimenti non ha senso che esista il forum. Le cose devono essere dette e ripetute, affinchè chiunque possa prenderne spunto.
Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 117
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 87
Total: 87

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.