Italian Non riesco a capire perchè!!!

Discussion in 'Italian Forum' started by GIS, Jul 7, 2019.

  1. GIS

    GIS Active Member Licensed User

    ciao, sto modificando la mia App dove dopo 3 volta che la carica gli esce l'invito per votarla. Il problema che non riesco a capire perché non funge. L'ultima riga che esegue é la prima linea quella del Log("forse "&voto) dopo di che le altre linee le ignora.
    Code:
    Log("forse  "&voto)
        
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        'FILE X VOTARE L'APP
        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           
        
    If File.Exists(File.DirInternal,"CalcItem/votare.vot"Then
           
            voto = 
    File.ReadString(File.DirInternal,"CalcItem/votare.vot")
            
    Log("entra  "&voto)
           
            
    If voto <> "Vero" Then
                voto = voto + 
    1
                
    File.WriteString(File.DirInternal, "CalcItem/votare.vot", voto)
                
    Log("primo  "&voto)
               
            
    else If voto = 3 Then
                VotaAPP
               
               
            
    else if voto > 3 Then
               
                voto = 
    1
                
    File.WriteString(File.DirInternal, "CalcItem/votare.vot", voto)
                
    Log("secondo  "&voto)
            
    End If
           
           
            
    Log("terzo  "&voto)
           
            
    'creo la cartellla
        Else    If Not(File.Exists(File.DirInternal, "CalcItem")) Then
           
            
    File.MakeDir(File.DirInternal, "CalcItem")
       
            
    'scrivo nel file che se non c'è me lo crea
            File.WriteString(File.DirInternal, "CalcItem/votare.vot""1")
                           
            
    Log("quarto "&voto)
                   
           
           
        
    End If

    End Sub
    Qui sotto riporto il listato del Sub Activity_Create. Se qualcuno capisce il motivo. Grazie


    Code:
    #Region  Project Attributes
        
    #ApplicationLabel: Calculator of CoK
        
    #VersionCode: 1
        
    #VersionName: 1.0
        
    'SupportedOrientations possible values: unspecified, landscape or portrait.
        #SupportedOrientations: portrait
        
    #CanInstallToExternalStorage: False
    #End Region

    #Region  Activity Attributes
        
    #FullScreen:  True
        
    #IncludeTitle: False
    #End Region

    Sub Process_Globals
       
            
    Dim Scelta As Int = 1
            
    Dim Separatore As String = "VIRGOLA"
            
    Dim stu As StringUtils 'dichiarato variabile stu è per le due sub  SetLabelSize e  SetButtonTextSize UTILIZZARE Libreria StringUtils
           
    End Sub

    Sub Globals
       
        
    Dim myImmagine As Bitmap
       
        
    Private CalcRssKoc As Button
        
    Private CalcSpeed As Button
        
    Private CalcLingua As Button

        
    Private ImageView1 As ImageView
           
        
    Private scelta1 As Button
        
    Private scelta2 As Button
        
    Private separatoreV As Label
        
    Private separatoreP As Label
        
    Dim voto As string
       
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
       
        
    'Per il linguaggio la Variabile SCELTA è quella che contiene il valore da 1 a 4 perchè le lingue saranno 4
        ' 1 Inglese quella predefinita 2 italiano 3 Tedesco 4 Spagnolo

           
       
       
        
    Activity.LoadLayout("Menu")
       
            ImageView1.Bitmap = 
    LoadBitmap(File.DirAssets, "CoK.png")
           
        
    If File.Exists(File.DirInternal,"CalcItem/scelta.ini"Then
           
                Scelta = 
    File.ReadString(File.DirInternal,"CalcItem/scelta.ini")
           
            
    Log(Scelta)
           
                    
    'creo la cartellla
        Else    If Not(File.Exists(File.DirInternal, "CalcItem")) Then
           
            
    File.MakeDir(File.DirInternal, "CalcItem")
       
            
    'scrivo nel file che se non c'è me lo crea
            File.WriteString(File.DirInternal, "CalcItem/scelta.ini""1")
                           
            Scelta = 
    1
                   
            
    Log(Scelta)
           
        
    End If
       
       
       
       
       
            
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                                 'FILE X IL SEPARATORE MIGLIAIA
             'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           
        
    If File.Exists(File.DirInternal,"CalcItem/separatore.ini"Then
           
           Separatore = 
    File.ReadString(File.DirInternal,"CalcItem/separatore.ini")
           
            
    Log(Separatore)
           
            
    'creo la cartellla
        Else    If Not(File.Exists(File.DirInternal, "CalcItem")) Then
           
            
    File.MakeDir(File.DirInternal, "CalcItem")
       
            
    'scrivo nel file che se non c'è me lo crea
            File.WriteString(File.DirInternal, "CalcItem/separatore.ini""1")
                           
            Separatore = 
    "VIRGOLA"
                   
            
    Log(Separatore)
           
        
    End If
       
       
        
    If Separatore = "VIRGOLA" Then
       
           
            myImmagine.Initialize(
    File.DirAssets,"acceso.png")
            scelta1.SetBackgroundImage(myImmagine)
       
            myImmagine.Initialize(
    File.DirAssets,"spento.png")
            scelta2.SetBackgroundImage(myImmagine)
       
       
        
    Else
           
            myImmagine.Initialize(
    File.DirAssets,"spento.png")
            scelta1.SetBackgroundImage(myImmagine)
       
            myImmagine.Initialize(
    File.DirAssets,"acceso.png")
            scelta2.SetBackgroundImage(myImmagine)
           
           
        
    End If
       
       
       
           
        myImmagine.Initialize(
    File.DirAssets,"button3d.png")
        CalcLingua.SetBackgroundImage(myImmagine)
       
        myImmagine.Initialize(
    File.DirAssets,"button3d.png")
        CalcSpeed.SetBackgroundImage(myImmagine)
       
        myImmagine.Initialize(
    File.DirAssets,"button3d.png")
        CalcRssKoc.SetBackgroundImage(myImmagine)
               
        myImmagine.Initialize(
    File.DirAssets,"label5.png")
        separatoreP.SetBackgroundImage(myImmagine)
       
        myImmagine.Initialize(
    File.DirAssets,"label5.png")
        separatoreV.SetBackgroundImage(myImmagine)
       
       
         
    If Scelta =1 Then
           
                    SetButtonTextSize(CalcSpeed,
    "Calculate Speed Up")
                    SetButtonTextSize(CalcRssKoc,
    "CoK - Calculate Resources")
                    SetButtonTextSize(CalcLingua,
    "Language")
                    SetLabelSize(separatoreV,
    "COMMA to separate the thousands")
                    SetLabelSize(separatoreP,
    "POINT to separate the thousands")
                   
             
    else if Scelta = 2 Then
                        SetButtonTextSize(CalcSpeed,
    "Calcolare Speed")
                        SetButtonTextSize(CalcRssKoc,
    "CoK - Calcolare Risorse")
                        SetButtonTextSize(CalcLingua,
    "Linguaggio")
                        SetLabelSize(separatoreV,
    "VIRGOLA per separare le migliaia")
                        SetLabelSize(separatoreP,
    "PUNTO per separare le migliaia")
                       
                 
    else If Scelta = 3 Then
                            SetButtonTextSize(CalcSpeed,
    "Velociser Berechnen")
                            SetButtonTextSize(CalcRssKoc,
    "CoK - Ressourcen Berechnen")
                            SetButtonTextSize(CalcLingua,
    "Sprache")
                            SetLabelSize(separatoreV,
    "KOMMA, um die Tausender zu trennen")
                            SetLabelSize(separatoreP,
    "PUNKT, um die Tausenden zu trennen")
                       
                    
    else If Scelta = 4 Then
                                SetButtonTextSize(CalcSpeed,
    "Calcular Aceleradores")
                                SetButtonTextSize(CalcRssKoc,
    "CoK - Calcular Recursos")
                                SetButtonTextSize(CalcLingua,
    "Idioma")
                                SetLabelSize(separatoreV,
    "COMA para separar los miles")
                                SetLabelSize(separatoreP,
    "PUNTO para separar los miles")
                             
        
    End If
                   
        
    Log("forse  "&voto)
        
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        'FILE X IL VOTARE L'APP
        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           
        
    If File.Exists(File.DirInternal,"CalcItem/votare.vot"Then
           
            voto = 
    File.ReadString(File.DirInternal,"CalcItem/votare.vot")
            
    Log("entra  "&voto)
           
            
    If voto <> "Vero" Then
                voto = voto + 
    1
                
    File.WriteString(File.DirInternal, "CalcItem/votare.vot", voto)
                
    Log("primo  "&voto)
               
            
    else If voto = 3 Then
                VotaAPP
               
               
            
    else if voto > 3 Then
               
                voto = 
    1
                
    File.WriteString(File.DirInternal, "CalcItem/votare.vot", voto)
                
    Log("secondo  "&voto)
            
    End If
           
           
            
    Log("terzo  "&voto)
           
            
    'creo la cartellla
        Else    If Not(File.Exists(File.DirInternal, "CalcItem")) Then
           
            
    File.MakeDir(File.DirInternal, "CalcItem")
       
            
    'scrivo nel file che se non c'è me lo crea
            File.WriteString(File.DirInternal, "CalcItem/votare.vot""1")
                           
            
    Log("quarto "&voto)
                   
           
           
        
    End If

    End Sub
     
  2. sirjo66

    sirjo66 Well-Known Member Licensed User

    prova ad aggiungere gli spazi e trasforma le righe dei log in (ad esempio):
    Log("forse " & voto)
     
  3. klaus

    klaus Expert Licensed User

    You define voto as a String in: Dim voto As string
    Then you test:
    Else If voto = 3 Then
    You try to compare an Int with a String, Else If voto = 3 Then will never be true.
    Nor will be : Else If voto > 3 Then
     
    LucaMs likes this.
  4. GIS

    GIS Active Member Licensed User

    l'ho fatto ma per fortuna che il problema non si é risolto. Perché se il problema era per una sciocchezza del genere ero messo male!!!!;):(
     
  5. GIS

    GIS Active Member Licensed User

    Avevo anche provato a dichiararla DIM voto as int ma non cambia niente. L'ultima linea che esegue è sempre. Anche
    If voto <> 10000 Then

    Code:
    Log("forse  "&voto)
        
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        'FILE X VOTARE L'APP
        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    le linee successeve non vengono eseguite. Anche perché comunque i Log successivi dovrebbe eseguirli o darmi degli errori per le variabile.
     
  6. GIS

    GIS Active Member Licensed User

    per il momento ho risolto in questo modo utilizzando DirRootExternal... Piu tardi provo a mettere DirInternal e vedo che succede.....Vado a mangiare altrimenti dimagrisco troppo...... Dim voto as String

    Code:
    Log("forse   " & voto)
        
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        'FILE X IL VOTARE L'APP
        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            
        
    If File.Exists(File.DirRootExternal,"CalcItem/votare.vot"Then
            
            voto = 
    File.ReadString(File.DirRootExternal,"CalcItem/votare.vot")
            
    Log("entra  " & voto)
            
            
    If voto <> "1000" Then
                voto = voto + 
    1
                
    File.WriteString(File.DirRootExternal, "CalcItem/votare.vot", voto)
                
    Log("primo  " & voto)
                
             
    If voto = "3" Then
                VotaAPP
            
    End If   
            
    End If   
             
    If voto > "3" And voto <> "1000" Then
                
                voto = 
    "1"
                
    File.WriteString(File.DirRootExternal, "CalcItem/votare.vot", voto)
                
    Log("secondo  " & voto)
            
    End If
            
            
            
    Log("terzo  " & voto)
            
            
    'creo la cartellla
        Else    If Not(File.Exists(File.DirRootExternal, "CalcItem")) Then
            
            
    File.MakeDir(File.DirRootExternal, "CalcItem")
        
            
    'scrivo nel file che se non c'è me lo crea
            File.WriteString(File.DirRootExternal, "CalcItem/votare.vot""1")
                            
            
    Log("quarto " & voto)
                    
            
            
        
    End If

    Sub VotaAPP
       
        
    Dim result As Int
       
        
    If Scelta = 1 Then
            result = 
    Msgbox2("If you like this app and think it is useful then please Rate it to support us.","Like this App?""Rate""Cancel""",Null)
           
           
                
    else  if Scelta = 2 Then
                result = 
    Msgbox2("Se ti piace questa app e pensi che sia utile, ti preghiamo di votarla per supportarci.","Ti piace l'App?""Vota""Cancel","",Null)
               
               
                    
    else  if Scelta = 3 Then
                    result = 
    Msgbox2("Wenn dir diese App gefällt und du denkst, dass sie nützlich ist, bewerte sie bitte, um uns zu unterstützen.","Gefällt dir die App?""Rate""Cancel","",Null)
                   
                   
                        
    else  if Scelta = 4 Then
                        result = 
    Msgbox2("Si te gusta esta aplicación y crees que es útil, califícala para apoyarnos.","¿Te gusta la aplicación?""velocidad""Cancel","",Null)
                       
                       
        
    End If
       
            
    If result = DialogResponse.POSITIVE Then
            
    File.WriteString(File.DirRootExternal, "CalcItem/votare.vot""1000")
                
    Dim fURI As String
                fURI = 
    "market://details?id=com.CalcolatriceGameItem&hl=it"
                
    Dim Market As Intent
                Market.Initialize(Market.ACTION_VIEW,fURI)
                
    StartActivity (Market)
                                   
            
    End If
       
    End Sub
     
  7. klaus

    klaus Expert Licensed User

    I would do it like this:
    Code:
    If File.Exists(File.DirInternal,"CalcItem/votare.vot"Then
        voto = 
    File.ReadString(File.DirInternal,"CalcItem/votare.vot")
        
    If voto < 3 Then
            voto = voto + 
    1
            
    Log(voto)
            
    If voto = 3 Then
                
    Log("voto")
                voto = 
    0
            
    End If
            
    File.WriteString(File.DirInternal, "CalcItem/votare.vot", voto)
        
    End If   
    Else
        
    File.MakeDir(File.DirInternal, "CalcItem")
     
        
    'scrivo nel file che se non c'è me lo crea
        File.WriteString(File.DirInternal, "CalcItem/votare.vot""0")
    End If
    Attached my small test program.
     

    Attached Files:

    LucaMs likes this.
  8. GIS

    GIS Active Member Licensed User

    Grazie, ma non capisco perché utilizzando DirInternal non funziona. Ho provato a cambiare cartella ma niente. Funziona solo con DirRootExternal. Ma solo per questo file per gli altri file presenti in cartella e utilizzando DirInternal funzionano tutti correttamente...
     
  9. GIS

    GIS Active Member Licensed User

    Ho rinunciato a capire perché DirInternal non funziona con quel file. Visto che utilizzo DirRootExternal ho dovuto provare a mettere i permessi per le versione android 6+ è stato più semplice di quello che credevo. Faccio un riepilogo nel caso a qualcuno servisse.
    Aggiungere la libreria: RuntimePermissions
    Code:
    Sub Process_Globals
     
            
    Dim Scelta As Int = 1
            
    Dim Separatore As String = "VIRGOLA"
            
    Dim stu As StringUtils 'dichiarato variabile stu è per le due sub  SetLabelSize e  SetButtonTextSize UTILIZZARE Libreria StringUtils

    'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            Private rp As RuntimePermissions ' per i pemessi
        
    End Sub
    nelle sub dove si legge o scrive il file aggiungere la linea Dim folder As String = rp.GetSafeDirDefaultExternal("nomecartella")

    Code:
    sub picopallino

    'xxxxxxxxxxxxxxxxxxxxxxxxxxxx
        Dim folder As String = rp.GetSafeDirDefaultExternal("nomecartella"
     
     
     
        
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        'FILE X IL VOTARE L'APP
        'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        
        
    If File.Exists(folder, "votare.vot"Then
        
            voto = 
    File.ReadString(folder,"votare.vot")
        
        
            
    If voto <> "1000" Then
                voto = voto + 
    1
                
    File.WriteString(folder, "votare.vot", voto)
          
             
    If voto = 3 Then
                VotaAPP
            
    End If
            
    End If
             
    If voto > "3" And voto <> "1000" Then
            
                voto = 
    "1"
                
    File.WriteString(folder, "votare.vot", voto)
           
            
    End If
        
        
      
        
            
    'creo la cartellla
        Else    If Not(File.Exists(folder, "Nomecartella")) Then
        
            
    File.MakeDir(folder, "Nomecartella")
     
            
    'scrivo nel file che se non c'è me lo crea
            File.WriteString(folder, "votare.vot""1")
                        
      
        
        
        
    End If

    end sub

    Sub VotaAPP
       
        
    Dim result As Int
       
        
    If Scelta = 1 Then
            result = 
    Msgbox2("If you like this app and think it is useful then please Rate it to support us.","Like this App?""Rate""Cancel""",Null)
           
           
                
    else  if Scelta = 2 Then
                result = 
    Msgbox2("Se ti piace questa app e pensi che sia utile, ti preghiamo di votarla per supportarci.","Ti piace l'App?""Vota""Cancel","",Null)
               
               
                    
    else  if Scelta = 3 Then
                    result = 
    Msgbox2("Wenn dir diese App gefällt und du denkst, dass sie nützlich ist, bewerte sie bitte, um uns zu unterstützen.","Gefällt dir die App?""Rate""Cancel","",Null)
                   
                   
                        
    else  if Scelta = 4 Then
                        result = 
    Msgbox2("Si te gusta esta aplicación y crees que es útil, califícala para apoyarnos.","¿Te gusta la aplicación?""velocidad""Cancel","",Null)
                       
                       
        
    End If
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        Dim folder As String = rp.GetSafeDirDefaultExternal("Nomecartella")
    'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            If result = DialogResponse.POSITIVE Then
            
    File.WriteString(folder, "votare.vot""1000")
                
    Dim fURI As String
                fURI = 
    "market://details?id=com.CalcolatriceGameItem&hl=it"
                
    Dim Market As Intent
                Market.Initialize(Market.ACTION_VIEW,fURI)
                
    StartActivity (Market)
                                   
            
    End If
       
    End Sub
    e per finire aggiungere nel Manifesto

    Code:
    AddManifestText(<uses-permission
    android:name=
    "android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion=
    "18" />
    )
    spero di essere stato utile e che mi sia spiegato nel miglior dei modi. Grazie a tutti per l'aiuto che date
     
    Last edited: Jul 7, 2019
  10. LucaMs

    LucaMs Expert Licensed User

    Infatti non c'è motivo perché la cosa possa funzionare nella RootExternal e non nella Internal.
    Qualcosa non va nel tuo codice (che non ho guardato molto).
    Mi sembra alquanto contorto e, come sottolineato da @klaus, non dovresti usare una variabile sia per contenere dati stringa che numerici.

    Non ho scaricato l'esempio di Klaus ma mi fido assolutamente, sono certo che funzioni.
     
  11. LucaMs

    LucaMs Expert Licensed User

    Dovresti dichiare Scelta come Int, anche se usi WriteString; con ReadString sarà automaticamente convertito in intero.

    Poi, molto più comoda e leggibile una Select anziché varie If annidate.
    Anziché:
    Code:
    Select Scelta
        
    Case 1
             SetButtonTextSize(CalcSpeed,
    "Calculate Speed Up")
             SetButtonTextSize(CalcRssKoc,
    "CoK - Calculate Resources")
             SetButtonTextSize(CalcLingua,
    "Language")
             SetLabelSize(separatoreV,
    "COMMA to separate the thousands")
             SetLabelSize(separatoreP,
    "POINT to separate the thousands")
        
    Case 2
             
    ' etc.
        Case 3
        
    Case 4
    End Select
    e Scelta dev'essere dichiara Int.
     
  12. klaus

    klaus Expert Licensed User

    I don't understand either why DirInternal doesn't work, it works on my device.
    Maybe, try to uninstall the program and reinstall it.
    I used DirInternal for testing with a file to simplify.
    I know that, with the permissions, it will also work with rp.GetSafeDirDefaultExternal().
     
  13. LucaMs

    LucaMs Expert Licensed User

    It is often (always?) the best choice.
     
  14. LucaMs

    LucaMs Expert Licensed User

    Conviene anche usare File.Combine.
     
  15. klaus

    klaus Expert Licensed User

    If the file is used only be the given application DirInternal is the best choice.
    If the file is shared with other applications an external storage is necessary, rp.GetSafeDirDefaultExternal() is the easiest.
     
    LucaMs likes this.
  16. GIS

    GIS Active Member Licensed User

    E' un pò un macello perché da una App ne faccio due. Perciò ho dovuto sdoppiare il tutto e apportare delle modifiche. All'inizio in effetti funzionava anche con DirInternal poi non ci ho capito più un cavolo e non c'è stato più verso di farla funzionare in quel modo, anche provando a cambiare nome al file o cambiare la cartella. Bho!!! Sicuramente il mio modo di programmare é molto contorto e incasinato e di quello me ne rendo conto ma ormai alla mia età non si cambia. Cmq adesso funziona tutto e per il momento non ho intenzione di metterci mani a meno che qualcuno capisca il motivo del non funzionamento di DirInternal. Avrei dovuto provare forse su un'altro dispositivo forse provando sempre con uno si crea caos nella cartella. Per la variabile l'ho impostata come string anche se a questo punto visto le modifiche che avevo fatto potevo dichiararla int.
    Qui sinceramente non ci ho guardato a cosa serve e come usarlo.
    Io avrei voluto usare DirInternal perché è la cosa migliore ma per un file non ho capito il motivo del non funzionamento.
     
  17. klaus

    klaus Expert Licensed User

    Does the test project I posted in post #7 work with your device?
     
  18. LucaMs

    LucaMs Expert Licensed User

    Guarda l'help contestuale (sempre):
    upload_2019-7-7_20-39-16.png


    Può servire per "concatenare" più sub directory in un'unica stringa, anziché scrivere "Cartella1/cartella2..." e mi pare più sicuro.

    A chi lo dici! Io se devo aggiungere una funzionalità ad un'app (cosa che sto facendo), dato che la funzionalità è complessa e non sono certo del risultato, la provo in un nuovo progetto, appunto di prova; poi magari funziona pure bene, ma per andare poi ad "inserirla" nell'app "principale", sono dolori :D

    Secondo me non c'è motivo, è solo che usi del codice diverso.
     
  19. LucaMs

    LucaMs Expert Licensed User

    Devi dichiarla Int, visto che poi usi dei confronti con dei numeri (If Scelta = 1) - [molto meglio la Select].
     
  20. LucaMs

    LucaMs Expert Licensed User

    "Il progetto che ho allegato al post #7 funziona sul tuo dispositivo?"
    ;)
     
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