Autore Topic: Componente Gb.Settings, funzione Inherits e metodi nascosti  (Letto 1719 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #15 il: 06 Marzo 2021, 14:13:47 »
Codice: [Seleziona]
Public Sub _free()

  Try Me.Save
  If Error Then Error "gb.settings: warning: unable to save settings: "; $sPath; ": "; Error.Where;; Error.Text

End

è il codice della classe settings del componente gb.settings nel codice sorgente di gambas

provate il codice che allego

non faccio nessun salvataggio di settings





"e il naufragar m'è dolce in questo mar"

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #16 il: 06 Marzo 2021, 14:26:03 »
Se puoi per il momento cancellare dalla tua mente _free e rispondere a questa domanda:

il codice che ho allegato prima lo hai provato?

Se lo hai provato quando chiudi la form vale a dire il programma, ti salva Clarabella?
Perché a me non la salva e per deduzione logica significa che di default settings non salva a meno che non istruisci il programma diversamente.

Mi auguro che così sia più comprensibile  :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #17 il: 06 Marzo 2021, 15:02:49 »
Prova a togliere l'ultima istruzione
settings.wriite(me)
nel tuo codice

La mia applicazione è molto specifica e il problema fondamentale è che le impostazioni le devo salvare subito poichè potrebbe succede che venga  a mancare la tensione  ciò che ho modificato andrebbe perso, quindi ogni volta che modifico un parametro faccio subito settings.save
Il problema è che se lo fa comunque alla fine ci sono probabilità di corruzione del file .conf poichè potrebbe accadere che venga tolta immediatamente ( ma è un problema della mia configurazione e non comune a tutti, lo definirei un problema di nicchia...)

quello che non riuscivo a capire e cio che ha generato l'esigenza di chiedere informazioni con un post era la questione riguardante inherits

dalla wiki avevo inteso che ogni volta che si deriva una classe da un altra se scrivo una funzione con lo stesso nome di una presente nella classe geniitrice  essa si sostituisce a quest'ultima
se però voglio richiamare la funzione originale posso farlo usando SUPER
evidentemente questo meccanismo non funziona, o funziona in maniera differente con i metodi nascosti nella classe settings
perlomenno questo credo di aver capito
« Ultima modifica: 06 Marzo 2021, 15:15:49 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #18 il: 06 Marzo 2021, 16:38:34 »
Prova a togliere l'ultima istruzione
settings.wriite(me)
nel tuo codice


Con Settings.Read(Me) leggi le misure della form e con Settings.Write(Me) le scrivi.
L'ho inserito per farti comprendere che solo se scrivo i dati in settings questi si salvano, a differenza di Clarabella.

Se togli Settings.Write(Me) succede che non memorizzi i cambiamenti delle dimensioni della finestra, ma mi fa anche capire che non hai provato il mio codice.

Per comprendere il codice da me postato devi cambiare la dimensione della finestra, chiudere e riaprire.

Circa _free con un settings ereditato ti serve o è solo una curiosità?

Perché sembra che tutto nasca da un malinteso quello che settings salvi di default.

Se il file di settings si corrompe non sarà certo _free a dirtelo, se manca la luce non esiste codice che salvi quello che stai facendo al momento.

Per sapere se è mancata la luce o comunque il programma è crashato ti basta un booleano che porti a True all'apertura salvandolo in settings e poi alla chiusura lo riporti a false.
All'apertura lo leggi e se è rimasto a true prendi i provvedimenti del caso.

Oppure non ho capito di cosa stiamo parlando, il che è possibilissimo.
In quest'ultimo caso se vuoi aiutare/ti alleghi una piccola applicazione che esemplifichi il tutto.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #19 il: 06 Marzo 2021, 16:49:54 »
@Akrobaticone
Anch'io uso in più di un programma settings.
Provvedo a memorizzare dei dati sia durante la configurazione da parte dell'utente all'interno del programma stesso ed altri parametri all'uscita del programma.
Le sole volte nelle quali ho avuto problemi di "corruzione" del file .conf, dipendeva da miei errori del codice.
Citazione
Prova a togliere l'ultima istruzione
settings.wriite(me)
nel tuo codice
Non genera il file .conf, come mi aspettavo...
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #20 il: 06 Marzo 2021, 18:05:38 »
vuoi ridere?
a me lo genera ogni volta e lo sovrascrive con la settings.write commentata
lo cancello ogni volta per sicurezza ho svuotato anche il cestino
per la cronaca la sovrascrittura del file viene eseguita solo se ci sono state modifiche ad almeno una chiave

poi la funzione
settings.write(me) salva le impostazioni della geometria del form
tutte le altre chiavi vengono salvate con
settings.save
infatti se vai a vedere nel file .conf si genera un'altra chiave

Codice: [Seleziona]
[FMain]
Geometry=[459,148,448,448,0]

Ho dato una spulciata anche alla wiki
https://www.gambas-it.org/wiki/index.php?title=Uso_della_classe_Settings

"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #21 il: 06 Marzo 2021, 18:25:34 »
ma solo su raspberry con Ubuntu server ??
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #22 il: 06 Marzo 2021, 18:31:19 »
vuoi ridere?
a me lo genera ogni volta e lo sovrascrive con la settings.write commentata


A me non succede e non deve succedere, c'è qualcosa che non va nel tuo Gambas.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #23 il: 06 Marzo 2021, 18:34:54 »

A me non succede e non deve succedere, c'è qualcosa che non va nel tuo Gambas.
Concordo!
Prova a vedere se riesci a fare qualcosa altrimenti, scrivi un miniprogrammino che vedo di farlo girare su Raspberry + Ubuntu 20.10.
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #24 il: 06 Marzo 2021, 18:50:08 »
Ragazzi non so cosa dirvi
Gambas installato da ppa e provato su 6 pc diversi  ( linux mint, ubuntu xfce, ubuntu kde) piu installazione su raspberry compilato da sorgenti
in ogni caso allego il programma così come lo pensavo con la modifica alla classe settings

"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #25 il: 06 Marzo 2021, 19:46:50 »
Ma tu non usi il componente gb.settings?  :rolleyes:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #26 il: 06 Marzo 2021, 20:11:21 »
se guardi il codice la classe settings l'ho importata nel mio codice e modificata secondo quanto avevo bisogno
In questo caso è necessario non abiltare il componente gb.settings
in TUTTI gli altri esempi che ho precedentemente postato il componente gb.settings era abilitato
"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #27 il: 06 Marzo 2021, 20:28:08 »
Mi sembra funzioni correttamente!

Dopo il
Codice: [Seleziona]
settings["test"] = casuale
io metto normalmente
Codice: [Seleziona]
Settings.save

ma comunque funziona.
« Ultima modifica: 06 Marzo 2021, 20:28:40 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #28 il: 06 Marzo 2021, 20:36:50 »
Mi sembra funzioni correttamente!

Dopo il
Codice: [Seleziona]
settings["test"] = casuale
io metto normalmente
Codice: [Seleziona]
Settings.save

ma comunque funziona.

appunto...
settings.save non serve poichè la routine _free() della classe settings ci pensa da sola a salvare la configurazione senza bisogno di salvarla manualmente quando l'applicazione si chiude
e nella mia settings modificata blocco l'esecuzione con una if condizionata dalla proprietà abilita

Questa discussione mi sembra la maratona di telethon.... ;)
Grazie per la pazienza.... ;D ;D ;D

EDIT:
Settings.save serve perchè salva immediatamente la configurazione ( e quindi all'uscita non viene di nuovo eseguito)
se all'uscita viene rilevato che qualche cosa è cambiato e non è stato ancora salvato allora viene chiamato lo stesso il metodo .save dalla routine _free()
Quindi se non salviamo noi manualmente i cambiamenti verranno comunque salvati in automatico all'uscita
 



« Ultima modifica: 09 Marzo 2021, 11:27:59 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Componente Gb.Settings, funzione Inherits e metodi nascosti
« Risposta #29 il: 09 Marzo 2021, 09:00:36 »
Qualche modifica è stata fatta dopo che avevo sollevato il problema, prima in mailing list e dopo nel bugtracker
https://gitlab.com/gambas/gambas/-/commit/f8b345d9e63b69db01085dd1a8b90058c5c754d7
il mio approccio non era corretto, ma qualche cosa ha sortito lo stesso
tutta da provare

"e il naufragar m'è dolce in questo mar"