Italian b4j - richiamo sub

Discussion in 'Italian Forum' started by fabero, May 15, 2018.

  1. fabero

    fabero Active Member Licensed User

    Ciao Ragazzi,
    sono un po' arrugginito: ho lavorato in passato con b4a e ora mi approccio a b4j.

    Ho bisogno di creare una sub da richiamare con un valore, e che questa mi renda un valore, in base ad un elaborazione da fare con il valore che gli è stato passato, da tornare ad un textfield.

    Mi date una dritta per piacere? Grazie! :)
     
  2. LucaMs

    LucaMs Expert Licensed User

    Code:
    Dim Risultato As Double
    Risultato = Calcola(
    123)
    EditText1.Text = Risultato

    Public Sub Calcola(Valore As Double) As Double
        
    Dim Restituisci As Double
        Restituisci = Valore * 
    5
        
    Return Restituisci
    End Sub
    Era troppo semplice, non credo che la tua domanda fosse proprio questa.
     
  3. giannimaione

    giannimaione Well-Known Member Licensed User

    Luca hai centrato il problema!
     
    LucaMs and Star-Dust like this.
  4. fabero

    fabero Active Member Licensed User

    E' molto simile, ma non va.. la sub è richiamta da una sub dell'evento di un click su di un bottone e quindi faccio textfieldout.text = Funzione(textfieldin.text) ma non pare andare...
     
  5. Star-Dust

    Star-Dust Expert Licensed User

    Sarebbe più corretto scrivere
    Mario hai c'entrato il problema :p
     
    LucaMs likes this.
  6. Star-Dust

    Star-Dust Expert Licensed User

    Fai capire meglio cosa devi fare, magari un pezzo di codice
     
  7. fabero

    fabero Active Member Licensed User

    In pratica....
    Code:
    Public Sub Calcolo(Codice As Double) As Double

    Dim Risultato As Int
    ........

    Return  Risultato

    End Sub

      
    Sub Decode_Click <-- (è l'evento collegato a click di un bottone

    if .... then 
        TextFieldOutput.Text = calcolo(TextFieldInput.Text)   
    else if .... then
    ......
    end if

    End Sub
     
  8. LucaMs

    LucaMs Expert Licensed User

    Non capisco più se ci sia entrato Luca o Mario :eek:

    Io, modestamente :cool:, ho capito meno di prima :D

    Perché non dovrebbe andare, se messo nell'evento Click di un qualche tasto ed all'interno di un If-Then-Else?
     
  9. Star-Dust

    Star-Dust Expert Licensed User

    Perché la sub dichiara di restituire un valore Double ma la variabile di ritorno é Int?
    ______________________________________________________________________
    Questo l'ho provato e funziona:
    Code:
    Sub Globals
        
    'These global variables will be redeclared each time the activity is created.
        'These variables can only be accessed from this module.
        Private Button As Button
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
        
    'Do not forget to load the layout file created with the visual designer. For example:
        'Activity.LoadLayout("Layout1")
        Button.Initialize("Button")
        
    Button.Text="1"
        
    Activity.AddView(Button,100dip,100dip,100dip,40dip)
    End Sub

    Sub Activity_Resume

    End Sub

    Sub Activity_Pause (UserClosed As Boolean)

    End Sub


    Sub Button_Click
        
    Dim B As Button = Sender
     
        B.Text=Calcolo(B.Text,
    1)
        
    ' Anche cosi potrebbe andare
        ' Button.Text=Calcolo(Button.Text,1)
    End Sub

    Sub Calcolo(Valore As Int, Incremento As Int) As Int
        
    Return (Valore+Incremento)
    End Sub
     
  10. LucaMs

    LucaMs Expert Licensed User

    Non credo (spero di no) che intenda questo; è chiaro che ho usato un Double perché non ho idea di quale debba essere la funzione ma essendo un calcolo ho usato il tipo più adatto (sia per interi che per decimali).

    No, secondo me ci manca qualche informazione, qualcosa circa il flusso del suo progetto/esempio.
     
  11. Star-Dust

    Star-Dust Expert Licensed User

    Non dicevo a te ma a febero, che ha postato questo:
    Code:
    Public Sub Calcolo(Codice As Double) As Double
       
    Dim Risultato As Int
       ........
       
    Return  Risultato
    End Sub
    ma sarebbe corretto questo:
    Code:
    Public Sub Calcolo(Codice As Double) As Double
       
    Dim Risultato As Double
       ........
       
    Return  Risultato
    End Sub
     
  12. LucaMs

    LucaMs Expert Licensed User

    Dovrebbe funzionare lo stesso
     
  13. Star-Dust

    Star-Dust Expert Licensed User

    Però non ha senso, se ti serve un double usi un double e hai una doppia precisione e non restituisci un int che perdi le cifre decimali....non ti pare?
    Comunque non cominciamo a riempire il thread di ciancie inutili e con disquisizioni sterili. :p
     
    LucaMs likes this.
  14. LucaMs

    LucaMs Expert Licensed User

    e quando mai lo facciamo?


    :p
     
  15. LucaMs

    LucaMs Expert Licensed User

    Non è che mi metto a scrivere qui che stasera m'inc...rò, perché al GF non elimineranno una str...etta, con tette e naso finti e ciapet mosce, malgrado i suoi 23 anni, odiata sicuramente dal pubblico, per il suo comportamento falso, per aver diffamato altri e per essere stata una scialba statua per tutto il periodo...
    non la elimineranno, malgrado i voti dei telespettatori (figuriamoci cosa succederebbe se si arrivasse ad eliminare la democrazia rappresentativa, come io vorrei).

    Non mi metto certo a scrivere cose così, qui e là, a... vanvAra! [​IMG]

    :p
     
  16. LucaMs

    LucaMs Expert Licensed User

    Ho riletto... questa è la riga incriminata.

    Scusami la sincerità ma è pessima.

    Hai sicuramente problemi perché utilizzi la stessa view, la EditText o TextField, sia per l'input che per l'output.


    P.S. si può anche fare, usando accorgimenti vari (come ad esempio una variabile globale - dichiarata nella Process_Globals, booleana, che conservi lo stato - la fase - dell'elaborazione) ma non è elegante e, soprattutto, "manutenibile".

    P.P.S. E poi manca un controllo su quanto immesso dall'utente, che dovrebbe essere sempre verificato.
     
    Last edited: May 15, 2018
  17. fabero

    fabero Active Member Licensed User

    Io sto usando Basic4Java... può essere per quello?

    P.S. i controlli ci sono, ho fatto un mega cuttone :)

    In pratica ci sono 2 textfield una di input e una di output.
    Al click del bottone, controlla lo scritto, e se ok prende il .Text e lo elabora tramite una funzione per calcolare il .Text di quella di output..
     
  18. LucaMs

    LucaMs Expert Licensed User

    No, lo stesso discorso vale per b4j, cambia solo il tipo di view, EditText in b4a, TextField in b4j.

    E' che non dovresti usare questa view per chiedere dati all'utente e, "contemporaneamente", per visualizzare il risultato di un calcolo in base al valore che l'utente ha fornito.
     
  19. Star-Dust

    Star-Dust Expert Licensed User

    È uguale, se vuoi te la rifaccio per B4J....ma sarebbe lo stesso codice.;)
     
  20. fabero

    fabero Active Member Licensed User

    In che senso una soltanto? Son 2.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice