* * * *

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 19, 2024, 10:11:56 am

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

402 Visitatori, 1 Utente
 

Post recenti

Pagine: 1 ... 8 9 [10]
91
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da slapshot il Marzo 26, 2024, 06:03:14 pm »

Ciao Slapshot.Ni, messa così è possibile che la pompa dei messaggi non riesca ad inviare le notifiche alla form create come istanza di un oggetto generico.
Bisogna passare per forza attraverso l'aggancio all'istanza di Application. Il createForm serve a quello. Far sapere all'applicazione quali form deve controllare e utilizzare per l'invio delle notifiche dei messaggi. (La sto riducendo all'osso, scorticandolo)

Diciamo che il metodo classico, prevede che la form di attesa venga creata e nascosta.
Al momento del bisogno la si porta in primo piano visibile e poi la si nasconde nuovamente quando non è più utile.

In questo modo si evita qualche casino.


Grazie, confesso che i miei ricordi mi dicono che la pratica di creare automaticamente le form all'avvio del software non era proprio ideale. Ad esempio, creare 150 form all'avvio dell'applicazione soltanto per visualizzarle in caso di necessità da parte dell'utente era una prassi da sconsigliare. Molto meglio istanziare l'oggetto a partire dalla classe necessaria quando se ne aveva bisogno per poi distruggerlo al termine del suo utilizzo. Poi se assegnare o meno un owner era da verificare in base alle esigenze del software.

La questione della pompa dei messaggi non riesco bene a comprenderla, ovvero: quale sarebbe il vantaggio di ricevere messaggi dalla coda di TApplication per form che sono inerti e che devono essere attivate ? Sicuramente ce ne sono, è per capire più a fondo.

Grazie mille @Stilgar !
92
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da Stilgar il Marzo 26, 2024, 02:21:47 pm »

Ciao Slapshot.Ni, messa così è possibile che la pompa dei messaggi non riesca ad inviare le notifiche alla form create come istanza di un oggetto generico.
Bisogna passare per forza attraverso l'aggancio all'istanza di Application. Il createForm serve a quello. Far sapere all'applicazione quali form deve controllare e utilizzare per l'invio delle notifiche dei messaggi. (La sto riducendo all'osso, scorticandolo)



Diciamo che il metodo classico, prevede che la form di attesa venga creata e nascosta.
Al momento del bisogno la si porta in primo piano visibile e poi la si nasconde nuovamente quando non è più utile.


In questo modo si evita qualche casino.


Guardando il codice mi sembra manchi la properties msg alla form di attesa.


L'errore sembra dovuto a file residui sul disco.
Suggerisco di cancellare qualche .o e .pp e riprovare la compilazione.




Stilgar
93
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da slapshot il Marzo 26, 2024, 12:09:14 pm »
Credo tu abbia sbagliato a copiare i messaggi di errore. Se crei l'istanza di una form da un qualsiasi punto del tuo codice, mi sentirei di consigliarti di essere più metodico ed avere maggiore controllo sulla tua istanza.

Codice: [Seleziona]
myform := TfrmAttendi.Create
try
  //usa
finally
  myform.free //oppure freeandnil(myform)
end;
94
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da petrusic il Marzo 25, 2024, 04:24:49 pm »
Un pò sono andati avanti, ma molto poco, perchè il compilatore mi da sempre Errore:
Impostazione nome per la nuova Form (Form8) e pa corrispondente Unit
Codice: [Seleziona]
unit FrmAttendi;

{$mode ObjFPC}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs;

type
  TFormAttendi = class(TForm)
  private

  public

  end;

var
  FormAttendi: TFormAttendi;

implementation

{$R *.lfm}

end.               

Impostazioni dentro il file .lpr
Codice: [Seleziona]
program DomusRatio;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, datetimectrls, memdslaz, runtimetypeinfocontrols, lazreportpdfexport,
  zcomponent, zcore, pack_powerpdf, FrmMain, Frm2, Frm3, Frm4, Frm5, utilmie,
  Frm7, Frm6, UModuloDatiDB, Frm9, Frm10, FrmAttendi;

{$R *.res}

begin
  RequireDerivedFormResource:=True;
  Application.Scaled:=True;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDataModule1, DataModule1);
  Application.Run;
end.                         

chiamata della Form dentro la Form9
Codice: [Seleziona]
 Application.CreateForm(TFormAttendi, FormAttendi);
  FormAttendi.msg:= 'Ricerca   MOVIMENTI AMMORTIZZABILI  in corso' + lineending + lineending + '-----  A T T E N D I  -----';
  FormAttendi.Show;         

Ed ecco i messagi di Errore relativi alle tre suddette righe
Citazione
Application.CreateForm(TFormAttendi, FormAttendi);
  FormAttendi.msg:= 'Ricerca   MOVIMENTI AMMORTIZZABILI  in corso' + lineending + lineending + '-----  A T T E N D I  -----';
  FormAttendi.Show;         

Per dirla alla carlona:   BO?
95
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da DragoRosso il Marzo 24, 2024, 10:20:24 pm »
La risposta è in un mio post nel tuo precedente topic, ma te lo ripeto con qualche chiarimento in più.

La FORM la puoi chiamare come vuoi, ma ciò che tu chiami nome della form dovrebbe essere il valore dell'attributo NAME del componente a desgin time.
Quello è il nome della Form, e quando la cambi l'IDE automaticamente aggiorna i riferimenti della classe (non però i riferimenti usati nel codice fatto da te).

Quindi se una Form la chiami FormMia, verrà creato il seguente codice::

Codice: [Seleziona]
type
TFormMia := Class(TForm)
.......
......
end;

Var FormMia: TFormMia;
Alterare quel codice a mano si può fare ma richiede attenzione.

Altra cosa è il nome della UNIT che contiene la FORM, ossia il file ".pas": il file lo salvi eseguendo il "SALVA COME" dal menu dell'IDE, e solo da li lo puoi rinominare.

L'operazione "SALVA COME" genera i riferimenti nel progetto (file .LPR e .LPI) e il file ".pas" e eventualmente il file ".lfr".

IL NOME DELLA FORM e i suoi antenati diretti, quindi ad esempio FormMia e TFormMia NON DEVONO ESSERE USATI COME NOME DELL'UNITA': non devono esserci file "FormMia.pas" o "TFormMia.pas".

Spero di essere stato più chiaro e d'aiuto.
96
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da petrusic il Marzo 24, 2024, 07:14:41 pm »
Ripartendo da una condizione di programma funzionante, ho capito quando si manifesta l'anomalia Run Errore (216).

Non riesco ad inserire la Form8 con Unit="FrmAttendi".

Per arrivare a produrla correttamante, ho eliminato la vecchia Form8, sia come Frm8.pas, sia come Frm.lfm. Poi ho creato un nuovo file di tipo Form a cui ho subito attribuito come nome frmAttendi. Ho completato l'inserimento confermando la creazione nell'IDE ed ho avviato la compilazione.
Però, a questo punto, si manifesta sempre l'Errore fatidico.

Francamente NON capisco, perchè non posso attribuire ad una Form qualsiasi, un file unit con un nome di fantasia. Ci sono vincoli sintattici?
97
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da petrusic il Marzo 24, 2024, 03:50:46 pm »
Il fatto che avvenga in una Form o in un'altra non toglie che le ultime modifiche non ne siano la causa.

Sono perfettamente d'accordo, ma io ho cercato in tutti i modi a me noti di eliminare la condizione che abbia potuto determinare un Errore a me incomprensibile. Il più semplice, ma anche quello proprio radicale è stato di contrassegnare come commenti tutte le nuove righe inserite ultimamente, ma è stato tutto inutile.

Purtroppo non sono in grado di individuare l'anomalia.

Ho rimesso in vita, a questo punto, la versione funzionante a prima delle ultime modifiche e l'anomalia è scomparsa. Dovrei ora ripartire da questo punto.

Altro non so fare.
 :-[
98
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da DragoRosso il Marzo 23, 2024, 09:05:42 pm »
Mi vengono in mente solo 3 opzioni:

1) DataModule1 non è stato istanziato;
2) ZConnection1 non è stato istanziato;
3) ZConnection1  è ATTIVO quando assegni il dato.

Ciao
99
Generale / Re:Windows e console
« Ultimo post da bonmario il Marzo 23, 2024, 07:34:41 pm »
Non faccio questa cosa da anni, e non so se funziona ancora !
In alternativa a quanto consigliato da quack, potresti usare "debugln" invece di "writeln", e lanciare il tuo programma da prompt di DOS. Mentre il programma gira, dovresti vedere nella finestra del DOS sottostante i tuoi messaggi.

Ciao, Mario
100
Generale / Re:Run Error (216) - General protection fault
« Ultimo post da petrusic il Marzo 23, 2024, 04:46:28 pm »
L'errore 216 è un errore abbastanza comune e l'indicazione così come è stata data è troppo generica.

E' necessario identificare il blocco di codice dove avviene ciò.
Il fatto che avvenga in una Form o in un'altra non toglie che le ultime modifiche non ne siano la causa. Una variabile globale, un evento, o altro possono essere influenzati anche da altri componenti / classi / moduli.

Metti diversi Breakpoint per delimitare la zona di ricerca, in alternativa occorre leggere i "map files" per vedere a cosa corrisponde l'indirizzo incriminato.

Fino a quando parliamo di mettere sotto controllo l'esecuzione del programma per capire qual'è l'istruzione che provoca l'Errore, ti seguo. É un metodo di ricerca usato sempre quando voglio individuare un Errore. L'ho fatto anche questa volta e l'istruzione incriminata è proprio quella segnalata nel messaggio d'Errore. Allego il messaggio

Ho provato il programma in 3 S.O. diversi: Ubuntu, LinuxMint e Manjaro. Tutti danno lo stesso Errore. L'immagine allegata è proprio quella generata dal mio programma in ambiente Manjaro, quello su cui sto  orientando recentemente.

L'istruzione in cui si genera l'Errore fa parte del seguente gruppo:
Codice: [Seleziona]
begin
  Menu2.Enabled:= False;
  if not FileExists(dbOrig) then    // l'ASSENZA del file ContabFamdb, potrebbe significare che il programma sta lavorando per la prima volta e bisogna dare vita al DB
  begin
   ShowMessage('DB ' + dbOrig + ' INESISTENTE - il Programma verra'' chiuso');
    Halt;   // Halt interrompe BRUTALMENTE l'esecuzione del programma e restituisce il controllo al chiamante
  end;
  i:= 0;
  sql:= 'select * from (select "causalifreq" AS nomeTbx, count(*) AS totRecTbx from causalifreq';
  sql:= sql + ' UNION select "ggaperte" as nomeTbx, count(*) as totRecTbx from ggaperte';
  sql:= sql + ' UNION select "movimgg" as nomeTbx, count(*) as totRecTbx from movimgg';
  sql:= sql + ' UNION select "partmovv" as nomeTbx, count(*) as totRecTbx from partmovv';
  sql:= sql + ' UNION select "piancont" as nomeTbx, count(*) as totRecTbx from piancont';
  sql:= sql + ' UNION select "prestmom" as nomeTbx, count(*) as totRecTbx from prestmom';
  sql:= sql + ' UNION select "racodvoci" as nomeTbx, count(*) as totRecTbx from racodvoci';
  sql:= sql + ' UNION select "restacassagg" as nomeTbx, count(*) as totRecTbx from restacassagg';
  sql:= sql + ' UNION select "riepmovg" as nomeTbx, count(*) as totRecTbx from riepmovg';
  sql:= sql + ' UNION select "componfam" as nomeTbx, count(*) AS totRecTbx from componfam';
  sql:= sql + ' UNION select "riepnewrecdb" as nomeTbx, count(*) as totRecTbx from riepnewrecdb) as contaRecDB';
//  WriteLn('sql= |' + sql + '|');
  WriteLn('dbOrig= |' + dbOrig + '|');
  DataModule1.ZConnection1.Database:= dbOrig;            <--  riga 337
  DataModule1.ZConnection1.Connected:= True;
  DataModule1.ZReadOnlyQuery1.Active:= False;
  DataModule1.ZReadOnlyQuery1.SQL.Text:= sql;
  DataModule1.ZReadOnlyQuery1.Active:= True;
  DataModule1.ZReadOnlyQuery1.First;           
     
map files è un termine per me assolutamente nuovo. Non lo conosco. Ci strudio su e vi faccio sapere.
Pagine: 1 ... 8 9 [10]

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18772
  • Topic in totale: 2233
  • Online Today: 578
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 402
Total: 403

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.