Autore Topic: Ottenere risultato errato da un metodo  (Letto 611 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.159
  • Tonno verde
    • Mostra profilo
Ottenere risultato errato da un metodo
« il: 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?
 :(
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.334
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #1 il: 29 Settembre 2015, 15:40:00 »
La variabile hFinestra che cosa dovrebbe essere ?   
« 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.159
  • Tonno verde
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #2 il: 29 Settembre 2015, 15:45:48 »
La variabile hFinestra che cosa deve essere ?   

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?
 :(
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.334
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #3 il: 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 ?
« Ultima modifica: 29 Settembre 2015, 16:22:33 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.159
  • Tonno verde
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #4 il: 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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.334
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #5 il: 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...........
« Ultima modifica: 29 Settembre 2015, 16:16:20 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.159
  • Tonno verde
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #6 il: 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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.334
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #7 il: 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 !)
« Ultima modifica: 29 Settembre 2015, 16:53:58 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.159
  • Tonno verde
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #8 il: 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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.334
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere risultato errato da un metodo
« Risposta #9 il: 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à.   
« Ultima modifica: 29 Settembre 2015, 17:59:12 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. »