Spanish Dos definiciones distintas de una variable en una misma función

carlos7000

Well-Known Member
Licensed User
Longtime User
Hola a todos

Tengo dos códigos distintos, de hecho más, en una misma función para procesar datos que recibo por json

Esta es la función:

B4X:
Private Sub jobDone (job As HttpJob)
    'Log(job.Success)
    'Log(job.GetString)
    Dim Recibido As String
   
    If(job.Success) Then
        If(job.JobName == x_Currency)Then
            Recibido = job.GetString
            If (Recibido.Contains("true") == True) Then
                Dim parser As JSONParser
                parser.Initialize(Recibido)
                Dim root As Map = parser.NextObject
                Dim result As Map = root.Get("result")
                Dim Last As Double = result.Get("Last")
                Dim Ask As Double = result.Get("Ask")
                x_askNow = Ask
                Dim Bid As Double = result.Get("Bid")
                x_bidNow = Bid
               
                If(x_ValorAlIniciar == 0) Then
                    x_ValorAlIniciar = x_bidNow                   
                End If
               
                Dim success As String = root.Get("success")
                Dim message As String = root.Get("message")
            End If           
        End If
       
        If(job.JobName == "OrderBookBuy")Then
            Recibido = job.GetString
            x_BuyRate = 0
           
            If (Recibido.Contains("true") == True) Then
                Dim parser As JSONParser
                parser.Initialize(Recibido)
                Dim root As Map = parser.NextObject
                Dim result As List = root.Get("result")
                For Each colresult As Map In result
                    Dim Rate As Double = colresult.Get("Rate")
                   
                    If(x_BuyRate < Rate) Then
                        x_BuyQuantity = Rate
                    End If
                   
                    Dim Quantity As Double = colresult.Get("Quantity")
                Next
                Dim success As String = root.Get("success")
                Dim message As String = root.Get("message")
            End If
        End If       
    Else
        Log(job.ErrorMessage & "/" & LastException)
    End If
   
    job.Release
End Sub

Como habrán notado en el primer bloque la variable 'result' esta definida como 'Map' y más abajo, 'result' esta definida como 'List', lo cual causa que el compilador se queje.

¿Es posible arreglar el código de tal forma que las declaraciones coexistan o debo crear una función para cada caso? ¿O es mejor separar el código en funciones? El problema es que aun debo procesar otros datos que le llegaran por jSon a la aplicación.

¿Como puedo solucionar el problema de una forma correcta?
 

EnriqueGonzalez

Well-Known Member
Licensed User
Longtime User
Podrias convertir los 2 en JavaObject y llamar sus respectivas funciones con runMethod.

Sin embargo es buscarle 3 pies al gato, lo veo mucho mas complicado que simplemente cambiar los nombres.
 

carlos7000

Well-Known Member
Licensed User
Longtime User
Podrias convertir los 2 en JavaObject y llamar sus respectivas funciones con runMethod.

Sin embargo es buscarle 3 pies al gato, lo veo mucho mas complicado que simplemente cambiar los nombres.

Hola Enrique.

Esa es la solución que implemente. Creo es la mas fácil.
 

carlos7000

Well-Known Member
Licensed User
Longtime User
Top