Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gianluigi - 29 Settembre 2015, 15:01:30

Titolo: Ottenere risultato errato da un metodo
Inserito da: Gianluigi - 29 Settembre 2015, 15:01:30
Siamo intorno alle 15 e mi sembra un'ora buona per scrivere un'idiozia, siate generosi stanotte ho dormito veramente poco, ditemi perché il metodo del test allegato mi restituisce la funzione (il puntatore?) e non True?
 :(
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: vuott - 29 Settembre 2015, 15:40:00
La variabile hFinestra che cosa dovrebbe essere ?    (http://forum.ubuntu-it.org/images/smilies/whistle.gif)
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: Gianluigi - 29 Settembre 2015, 15:45:48
La variabile hFinestra che cosa deve essere ?    (http://forum.ubuntu-it.org/images/smilies/whistle.gif)

Capisco che mi stai sottintendendo qualcosa, ma cosa?  :rolleyes:

Se passo Form1 come new form perchè non funge  :rolleyes:

È come il caminetto di Leonardo, perché non si muove?
 :(
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: vuott - 29 Settembre 2015, 15:54:00
Se passo Form1 .......


Eh..... e la funzione leggiqualcosa() cosa riceve (nel senso di cosa le viene passato come argomento)... invece ?
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: Gianluigi - 29 Settembre 2015, 16:06:44
Se passo Form1 .......


Eh..... e la funzione leggiqualcosa() cosa riceve... invece ?

Quindi se ho bisogno di un metodo che si comporti in base al valore bQualcosa devo appoggiarlo ad una funzione? Aaah ecco l'inghippo io volevo fare tutto in uno e non si può  :ok: Giusto? Dico bene o dico sciocco?
 :ciao:
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: vuott - 29 Settembre 2015, 16:14:48
Quindi se ho bisogno di un metodo che si comporti in base al valore bQualcosa devo appoggiarlo ad una funzione? Aaah ecco l'inghippo

Hai ragione tu: hai dormito malissimo stanotte !  Svegliaaaaa !     :hard:

Analizziamo il tuo codice principale:

Codice: [Seleziona]
Public hF1 As Form1


Public Sub Form_Open()

  hF1 = New Form1
  leggiqualcosa(hF1)

End

Private Sub leggiqualcosa(hFinestra As Form)
 
  Print hFinestra.bQualcosa
 
End


La funzione leggiqualcosa() invoca la omologa routine e le passa la variabile hF1, La quale è di tipo Form1 !

La procedura leggiqualcosa(hFinestra As Form) riceve, sì, una variabile, ma è del tipo di un generico...........
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: Gianluigi - 29 Settembre 2015, 16:37:07
Quindi non c'è altra via di questa? come ho sempre fatto  :P

Codice: [Seleziona]
' Gambas class file

Public hF1 As Form1

Public Sub Form_Open()

  hF1 = New Form1
  hF1.Show 
  leggiqualcosa(hF1, hF1.bQualcosa)

End

Private Sub leggiqualcosa(hFinestra As Form, b As Boolean)
 
  Print hFinestra.Name, b
 
End
:violent:
Rispetto per gli anziani
 :ciao:
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: vuott - 29 Settembre 2015, 16:48:36
...a me pare, invece, che possa esserci quest'altra che avevi appena accennato:

Codice: [Seleziona]
Public hF1 As Form1


Public Sub Form_Open()

  hF1 = New Form1
  leggiqualcosa(hF1)

End

Private Sub leggiqualcosa(hFinestra As Form1)
 
  Print hFinestra.bQualcosa
 
End

La sottoprocedura leggiqualcosa() riceve come proprio argomento una varibile di tipo Form1.... nulla di strano, dato che ad essa viene passata una variabile (la hF1) di tipo Form1.

Infatti, solo così - rispetto al tuo primo codice - è richiamabile la proprietà .bQualcosa, facente parte dell'oggetto Form1 .

Per essere ulteriormente chiari, tu nel tuo codice iniziale hai dichiarato come argomento della sub-routine la variabile hFinestra As Form (NON Form1 !)
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: Gianluigi - 29 Settembre 2015, 17:34:51
...a me pare, invece, che possa esserci quest'altra che avevi appena accennato:

Codice: [Seleziona]
Public hF1 As Form1


Public Sub Form_Open()

  hF1 = New Form1
  leggiqualcosa(hF1)

End

Private Sub leggiqualcosa(hFinestra As Form1)
 
  Print hFinestra.bQualcosa
 
End

La sottoprocedura leggiqualcosa() riceve come proprio argomento una varibile di tipo Form1.... nulla di strano, dato che ad essa viene passata una variabile (la hF1) di tipo Form1.

Infatti, solo così - rispetto al tuo primo codice - è richiamabile la proprietà .bQualcosa, facente parte dell'oggetto Form1 .

Per essere ulteriormente chiari, tu nel tuo codice iniziale hai dichiarato come argomento della sub-routine la variabile hFinestra As Form (NON Form1 !)

Scusa stavo picchiandomi con "le aste" di sotema (altra discussione)  :rolleyes:

Si ho capito devo passare l'oggetto specifico e non generico quindi se io ho bisogno che il metodo lavori su più finestre devo farlo a monte e non li nel metodo, giusto? Oppure...
 :ciao:
Titolo: Re:Ottenere risultato errato da un metodo
Inserito da: vuott - 29 Settembre 2015, 17:56:29
Si ho capito devo passare l'oggetto specifico e non generico ....

...un rapporto genus ad speciem: se passi ad uno un Genovese, chi riceve non può dire che quello è un generico Ligure.  ;D

Se avvenisse questo, chi riceve non sarebbe capace di cogliere alcune peculiarità.    (http://forum.ubuntu-it.org/images/smilies/guitar.gif)