Autore Topic: Visibilità delle variabili  (Letto 627 volte)

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Visibilità delle variabili
« il: 04 Giugno 2019, 21:51:02 »
Ho modificato il titolo della discussione perché è vero che grazie a vuott mi è stato chiarito un passaggio del codice ma nel contempo ce ne sono altri e ce ne saranno molti altri di problemi da risolvere.
Uno tra questi è che mentre in Vb se dichiaravo una variabile come per esempio la "i" per i cicli For To Next in Gambas la devo dichiarare in ogni Public Sub....naturalmente non è il problema della i ma semmai delle variabili contenenti i dati delle elaborazioni...come ovviare al problema?


Nota del moderatore: Si sta facendo riferimento ad un'unica discussione poi da me divisa in due discussioni distinte.
« Ultima modifica: 05 Giugno 2019, 14:26:29 da Gianluigi »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Visibilità delle variabili
« Risposta #1 il: 04 Giugno 2019, 22:38:12 »
Ho modificato il titolo della discussione perché è vero che grazie a vuott mi è stato chiarito un passaggio del codice ma nel contempo ce ne sono altri e ce ne saranno molti altri di problemi da risolvere.
Invece, sarebbe stato più opportuno avviare tanti post quanti problemi avevi rilevato: in questo modo avresti consentito agli altri avventori del forum di trovare più facilmente la soluzione di simili problemi, sorti anche a loro.



.... la devo dichiarare in ogni Public Sub.......come ovviare al problema?

Quale è il problema perché tu debba dichiararla in ogni Public Sub ?
« Ultima modifica: 04 Giugno 2019, 22:41:48 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Visibilità delle variabili
« Risposta #2 il: 04 Giugno 2019, 23:17:14 »
Ho modificato il titolo della discussione perché è vero che grazie a vuott mi è stato chiarito un passaggio del codice ma nel contempo ce ne sono altri e ce ne saranno molti altri di problemi da risolvere.
Invece, sarebbe stato più opportuno avviare tanti post quanti problemi avevi rilevato: in questo modo avresti consentito agli altri avventori del forum di trovare più facilmente la soluzione di simili problemi, sorti anche a loro.

vuott ti ha dato il suggerimento giusto: 1 domanda per 1 discussione.

Circa la tua ultima domanda, se ho capito bene stai chiedendo come passare il valore del contatore di un ciclo ad altra sub.
A parte che non mi è chiaro il perché di questa tua necessità, una soluzione può essere questa:

Public (se il valore deve essere letto ovunque nel progetto) oppure Private (visibile solo alle routine del modulo stesso) iContatore As Integer.
Poi in una qualunque routine del modulo/classe:
Codice: [Seleziona]
For i As Integer = 1 to ...
  iContatore = i
Next

Per leggere il valore in altra routine del modulo/classe:
Codice: [Seleziona]
valore = iContatore

Per leggere il valore in una routine di un altro modulo/classe:
Codice: [Seleziona]
valore = <nome del modulo/classe>.iContatore

Appena avrai chiarito dividerò le discussioni con oggetti più descrittivi.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Visibilità delle variabili
« Risposta #3 il: 04 Giugno 2019, 23:25:04 »
...ma Gambas accetta una variabile Pubblica-Globale per il ciclo For...Next ?   ???
Mi pare di... no !


Ad ogni modo, vir1966, devi essere più chiaro nella descrizione del problema e dell'obiettivo da raggiungere.
« Ultima modifica: 05 Giugno 2019, 00:30:10 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Visibilità delle variabili
« Risposta #4 il: 05 Giugno 2019, 10:42:54 »
...ma Gambas accetta una variabile Pubblica-Globale per il ciclo For...Next ?   ???
Mi pare di... no !
Non l'accetta come contatore ma per riceverne il valore, si.
Allego piccolo progetto esplicativo
Citazione
Ad ogni modo, vir1966, devi essere più chiaro nella descrizione del problema e dell'obiettivo da raggiungere.
Sono perfettamente d'accordo.
Se uno non capisce la domanda è impossibile rispondere.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vir1966

  • Gamberetto
  • *
  • Post: 39
    • Mostra profilo
Re:Visibilità delle variabili
« Risposta #5 il: 05 Giugno 2019, 13:11:51 »
Mi scuso se ho proseguito questa discussione mi sembrava più logico vedere le differenze tra VB e Gambas comunque l'esempio della i per for ....next era solo perché avevo notato la non portabilità di variabili tra routine che sono tutte  pubbliche per cui mi pareva strano e chiedevo lumi....il "problema" vero sarà quando dovrò passare le variabili dalla routine pubblica elabora comandata dal pulsante Elabora...alla routine pubblica stampa chiamata dal pulsante Stampa, se il comportamento sarà come l'esempio della i che uso per i cicli for...next

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Visibilità delle variabili
« Risposta #6 il: 05 Giugno 2019, 13:46:34 »
La "visibilità" di una variabile all'interno delle Procedure (...le Sub), esistenti all'interno di un unico Modulo o di un'unica Classe, viene ottenuta impostando tale variabile come "Globale":

Tale caratteristica fa sì che il valore memorizzato in memoria non sia perso all'uscita del programma da una Procedura, come avviene invece in una variabile automatica locale.

Una variabile Globale può, poi, essere "Pubblica" (ossia può essere "vista", e può dunque essere anche modificata, da eventuali altri Moduli o Classi), oppure "Privata" (ossia può essere "vista" esclusivamente all'interno del Modulo o della Classe ove è stata dichiarata.

cfr. https://www.gambas-it.org/wiki/index.php?title=Le_Variabili#Variabili_globali_e_variabili_locali


Taluni non gradiscono utilizzare le variabili "Globali" (necessarie però in un linguaggio che possiede anche gli "Eventi" quali risorse di una Classe), e pertanto passano i valori di una variabile locale, gestiti all'interno di una Procedura, ad altre Procedure mediante gli Argomenti formali della Procedura predetta.

cfr. per analogia: https://www.gambas-it.org/wiki/index.php?title=Scrivere_una_Funzione#Passaggio_dei_dati_ad_una_Funzione
« Ultima modifica: 08 Giugno 2019, 19:11:47 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »