Autore Topic: Salvare il contenuto di una collection  (Letto 845 volte)

  • Visitatore
Salvare il contenuto di una collection
« il: 25 Febbraio 2009, 15:31:37 »
Ciao
Problema :
Ho una collection al cui interno salvo svariate class :
 
Codice: [Seleziona]

DIM oggetto AS NEW OGGETTIdisegnati
WITH oggetto
  .tipo = tipo
  .x = x0
  .y = y0
END WITH
tutti_gli_oggetti.Add(oggetto, conteggio)


la class è composta così ( è più lunga ) :
Codice: [Seleziona]

PUBLIC tipo AS String
PUBLIC x AS Integer
PUBLIC y AS Integer
....


Come si fà a salvare la collection per averla disponibile al nuovo avvio ???

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Salvare il contenuto di una collection
« Risposta #1 il: 25 Febbraio 2009, 16:16:10 »
Devi usare il compinente gb.setting....e poi lo gestisci con la sintassi:

Codice: [Seleziona]
setting[nome_variabile/tipo] = nome_stringa
setting[nome_variabile/x] = valore_numerico

ecc....

e dai

Codice: [Seleziona]
setting.save


per salavre i setaggi

per leggere i dati invece usi

Codice: [Seleziona]
variabile_tipo = setting[nome_variabile/tipo]
variabile_x = setting[nome_variabile/x]

  • Visitatore
Re: Salvare il contenuto di una collection
« Risposta #2 il: 25 Febbraio 2009, 18:41:12 »
Ah non sapevo che settings andasse bene anche per salvare gli oggetti .... pensavo andasse bene solo per le string, l'ho usato un sacco di volte per queste ...

Buono a sapersi, adesso sono in winzozz quindi non posso provare ....
grazie intanto

EDITATO
Il mio problema cesko è che all'interno della mia collection ho classi (oggetti) non stringhe ....

Non sò però se mi hai instradato .... su settings non capisco quel settings.write(object,key) a cosa serve .....
se provo a usarlo con la class mi dice "unknown symbol window in class" .... che oggetto ci si può salvare dentro ??

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Salvare il contenuto di una collection
« Risposta #3 il: 25 Febbraio 2009, 23:36:32 »
Il componente in questione serve per manipolare file di configurazione.
In sostanza, in un file del genere puoi salvarci delle impostazioni, non degli oggetti (non è, per capirsi, l'equivalente del comando SHELVE di Python, ad esempio). La sintassi Settings.Write scrive sul file di configurazione le impostazioni di un oggetto ma queste impostazioni si limitano, per quel che ne so io, alla semplice geometria di un form (vale a dire le coordinate X,Y dell'angolo in alto a SX e la larghezza/altezza del form).
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Salvare il contenuto di una collection
« Risposta #4 il: 26 Febbraio 2009, 17:34:34 »
In realtà, essendo un semplice file, configurato in modo simile ai vecchi INI di windoz, puoi scriverci di tutto, ma non in formato binario; per intenderci, il file è un file di testo, puro e semplice testo, per cui l'inserimento di caratteri binari, potrebbe portare a qualche problema.
Nel qual caso, è possibile convertire il tutto in valori esadecimali (o decimali), ma rappresentati sempre in formato ASCII.

In pgDesigner 1.x, ho usato questo approccio per salvare le impostazioni dell'applicazione, ma poi ho sostituito il tutto in XML. La cosa, ovviamente, non cambia l'aspetto ascii, perchè anche xml è in definitiva un file di testo, solo che ha una sintassi particolare, per una lettura specifica.

In Gambas, non puoi esportare l'oggetto, come è localizzato effettivamente in memoria, ma solo i valori delle sue proprietà correnti. Queste devono comunque essere convertire un stringhe, per poter essere salvate con Setting.
Come suggerito da leo, è quello di salvare le coordinate e le dimensioni di una Form (x,y,w,h), ad esempio, ma non è possibile salvare il blocco binario dell'oggetto stesso.

Ritornando a pgDesigner, io uso sia Setting che Xml (a scelta dell'utente), per salvare la configurazione di un progetto, ovvero i dati immessi dall'utente, le coordinate di un oggetto, i link, e varie altre cose, ma sempre in formato ascii. Per esempio, salvo anche i colori di un singolo oggetto, convertendo opportunamente il valore RGB nei singoli elementi, li trasformo in stringhe, e poi ci faccio un bel Join(array, ",") con la virgola come separatore, con il risultato di avere una stringa così:
Codice: [Seleziona]

"255,0,192"

Abbinando la stringa ad uno nome specifico, posso salvarla nel file con Setting, in questo modo:
Codice: [Seleziona]

Setting["COLORS/BgColor"] = "255,0,192"

E' ovvio che, nella rilettura del valore, devo fare l'operazione contraria, ovvero splittare la stringa nei singoli elementi, trasformarli in numeri interi, e ricreare il colore con la funzione appropriata.