* * * *

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.
Aprile 16, 2024, 05:08:27 pm

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

69 Visitatori, 0 Utenti

Autore Topic: errore violation access in progettazione su chiusura unit  (Letto 1629 volte)

PeppeC

  • Newbie
  • *
  • Post: 18
  • Karma: +0/-0
errore violation access in progettazione su chiusura unit
« il: Settembre 05, 2020, 05:50:19 pm »
Ambiente windows, lazarus 2.0.10 + zeos 7.2.6.0
Chiedo aiuto sul problema in oggetto che in fase di progettazione, alla chiusura della unit principale causa errore violation error.
In esecuzione non sono presenti problemi evidenti, la chiusura del progetto sembra avvenire normalmente, ma in realtà il processo rimane attivo e deve essere terminato manualmente.

Ho eseguito innumerevoli prove fino allo sfinimento.
L'unico modo che ho individuato per chiudere la unit in progettazione senza errori è cancellare la proprietà "Connection" dagli oggetti TZsequence, ma chiaramente l'esecuzione non avverrebbe correttamente.
Impostando sui sequencer la proprietà Connection a run-time, riesco a chiudere e aprire correttamente la unit, ma ovviamente il problema della chiusura dall'esecuzione rimane.
Ritengo che il problema potrebbe essere nel file LFM dell'unità. Lo strumento di Lazarus "Controlla file LFM nell'editor" ha individuato e corretto un errore nella proprietà della form "Icon", ma comunque il problema permane.

Avete idee sulla possibile causa?
Peppe Cintura

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #1 il: Settembre 06, 2020, 05:17:46 pm »
Ciao.In genere quell'errore in chiusura avviene se viene de allocato 2 volte lo stesso puntatore.Prova a controllare se rilasci la memoria 2 volte.

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

PeppeC

  • Newbie
  • *
  • Post: 18
  • Karma: +0/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #2 il: Settembre 07, 2020, 04:54:13 pm »
Ciao.In genere quell'errore in chiusura avviene se viene de allocato 2 volte lo stesso puntatore.Prova a controllare se rilasci la memoria 2 volte.

Stilgar
Grazie Stilgar, effettivamente chiudevo nelle innumerevoli prove con application.destroy e subito dopo application.terminate, che generava l'errore di violazione.
Eliminato application.destroy, comunque da sempre errore, ma stavolta eccezione di classe 'External: SIGSEGV all'indirizzo 1000817C7.
Lo scenario scenario è questo:
 - form di login, che viene nascosta prima di chiamare modalità normale (show) la form principale.
 - quando voglio uscire dalla form principale per chiudere, nel suo evento formClose, se metto Application.Terminate va in errore, se invece non lo ometto, non va in errore ma l'applicazione rimane sospesa per qualche processo a me sconosciuto e devo "killarla" manualmente.
E' come se la form principale non venga chiusa, ma nascosta dalla vista (hide) e quindi rimanga sospesa...
Eppure fino a poco tempo fa funzionava regolarmente, non capisco quale modifica possa generato questo effetto.
Qualche idea?
« Ultima modifica: Settembre 07, 2020, 10:07:31 pm da PeppeC »
Peppe Cintura

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #3 il: Settembre 08, 2020, 04:58:39 pm »
Dalla descrizione stai interferendo con il normale processo di shotdown dell'applicazione.
L'applicazione si fa carico di eliminare tutte la form che sono state registrate.
Sel il login lo fai con normale flusso di creazione in avvio, poi non devi eliminarla.
Nella formClose fai da qualche parte
Codice: [Seleziona]
  CloseAction:= caFree;
Altrimenti la finestra main resta attiva ma nascosta.Questo impedisce all'applicazione di terminare.
L'applicazione termina in modo automatico quando la prima form (quella che viene registrata come main) viene rilasciata.

Stilgar
« Ultima modifica: Settembre 09, 2020, 09:10:28 am da Stilgar »
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

PeppeC

  • Newbie
  • *
  • Post: 18
  • Karma: +0/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #4 il: Settembre 08, 2020, 11:29:27 pm »
Grazie ancora Stilgar, credo di aver capito. In realtà, come spiegavo prima, la mia form principale è la procedura di login (prima form del mio progetto,MainForm) e la prima ad essere avviata. Visto che la mia form principale è richiamata da quella di login in modalità Show piuttosto che in ShowModal, non ho più modo di tornare al login e quindi chiudere. Ora mi spiego perchè tutto rimane sospeso, quello che non mi spiego è perchè fino a poco tempo fa il tutto funzionava. Disgrazia vuole che poco tempo fa ho avuto problemi con il mio HD e per necessità ho reinstallato il tutto e contestualmente sono passato da Lazarus versione 2.0.6 a 2.0.8 e subito dopo a 2.0.10, così mi sono perso... 
Altri IDE, in altri linguaggi di programmazione, all'interno del progetto prevedono una serie di form e fra queste una, anche se non è la prima dell'elenco, può essere dichiarata come MainForm.
In alternativa, mi chiedo se, per evitare di fare modifiche strutturali al progetto, non esista un modo, un'istruzione, per chiudere di botto (si fa per dire), da qualsiasi punto l'applicazione?
Grazie.
« Ultima modifica: Settembre 11, 2020, 09:33:40 pm da PeppeC »
Peppe Cintura

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #5 il: Settembre 09, 2020, 08:58:46 am »
Ciao
Se vuoi allegare il progetto, possiamo vedere di sistemarlo a tempo perso.




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

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #6 il: Settembre 09, 2020, 09:33:59 am »
In alternativa.


Prova a controllare questo progetto.
Fa 2 cagatine al volo, nulla di complesso.



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

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #7 il: Settembre 10, 2020, 09:15:39 pm »
News?
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

PeppeC

  • Newbie
  • *
  • Post: 18
  • Karma: +0/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #8 il: Settembre 11, 2020, 07:24:33 am »
nessuna novità al momento. Ho provato ad esaminare il piccolo progetto che hai postato, ma credo che tu lo abbia zippato prima di salvarlo. Infatti aprendo il progetto, questo non include le unità. Ma non è questo il problema, si può ricostruire, anche se non l'ho ancora fatto...
L'unica cosa che ho afferrato del tuo progetto è la funzione "sleep", che ho tanto cercato in altre occasioni.
Sulla rete ho anche trovato come scambiare (swap) la main form con un'altra in modalità esecuzione. Ha funzionato nel senso che effettivamente la mia form principale assume il ruolo di MainForm (isMainForm=true), ma in chiusura ho sempre il solito errore anche se chiudo con CloseAction:=caFree;
Avrei quindi preso la decisione di apportare le modifiche al progetto e attivare il login dopo aver avviato la mia form principale, non è difficile, ma mi da l'idea che possa essere un problema di sicurezza violabile ancora più facilmente.
Mi sono intestardito perchè fino a poco tempo fa funzionava tutto, ho solo cambiato disco e versioni lazarus, ma in questo passaggio è successo l'imprevisto.
Dalla tua spiegazione ho capito che è una situazione del tutto normale il comportamento attuale di Lazarus e purtroppo non conoscendolo ancora nel pieno delle sue funzioni base, ho dato la caccia a errori fantasma.
Grazie.

P.S.: se dovesse servire a qualcuno, includo la procedura che imposta in esecuzione una qualsiasi form del progetto come principale:

procedure SetAsMainForm(aForm:TForm);
var
 P:Pointer;
begin
 P := @Application.Mainform;
 Pointer(P^) := aForm;
end ;   
« Ultima modifica: Settembre 11, 2020, 07:43:16 am da PeppeC »
Peppe Cintura

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:errore violation access in progettazione su chiusura unit
« Risposta #9 il: Settembre 12, 2020, 10:26:10 pm »
Ciao.
In termini informatici la funzione che hai postato è una mezza bestemmia.
Quella è una proprietà in sola lettura.
Se è in sola lettura un motivo ci sarà al livello di design e gestione la mainform è gestita interamente.
Potresti, in caso di necessità, giocare con la lista delle form caricate nell'applicazione.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 80
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 69
Total: 69

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.