AutoUpdate: No coinciden los tipos

Lhutied

Newbie Lvl 1
Hola! Estamos tratando de implementar el autoupdate y nos sale este error. Nos cuesta ya que el tutorial que encontramos aca en GS es de hace 7 años. Si tienen una guia actualizada o un software mejor, me lo podrian recomendar. Gracias!
bW90Ydf.png
 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
¿Y si mejor depurás el código? Así no vas a poder saber cuál es el problema.

Saludos.
 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
OpenURL no devuelve un Integer, devuelve un String, y en ese caso, el tipo de dato no coincide, ese aporte siempre estuvo mal; yo creo que es porqué hasta hace unos cuántos años, OpenURL no devolvía todo el request con el HTML, sino el contenido del archivo, y el String se convertía automáticamente en Integer. (Esto probablemente haya cambiado con el tiempo, hacia algún estándar nuevo).

Vas a tener que leer todo el HTML y parsearlo por tu cuenta para utilizar eso correctamente, cuando debugees con la variable iX como String, vas a notar que no te devuelve el número que escribiste en VEREXE.txt, sino todo un HTML.

Saludos.
 

Dr. Lord Fers

Legendario Inmortal Lvl 5
Miembro del equipo
Moderador
Moderador de Tecnología
Para parsearlo tenés que parsear todo el formato de HTML.

Te recomiendo sino que subas un <HTML>1</HTML> y hagas algo del estilo:
InStr("<HTML>"...)

Consigas la posición donde se encuentre y lo demás con Mid(...) agarres el número que esté adentro.

No recuerdo bien cómo trabajaban esas funciones de VB6, pero seguro vos sí sepas.

Saludos.
 

recox

Argentum Online Libre

Rexinto

Newbie Lvl 4
Buenas Fer! Todo bien? te dejamos el codigo del autoupdate como aporte, para que vean como es la solucion!:

Código:
Private Sub Analizar()

    Dim i As Integer, iX As Integer, tX As Integer, DifX As Integer, dNum As String, t As Integer
    
    
    Dim prueba As String
    
    'lEstado.Caption = "Obteniendo datos..."
    Call addConsole("Buscando Actualizaciones...", 255, 255, 255, True, False)
    Call Reproducir_WAV(App.Path & "\Wav\Revision.wav", SND_FILENAME)
        
    iX = Inet1.OpenURL("http://WEB/VEREXE.txt") 'Host
    
    Dim respuesta As String
    Dim obj As Object
    Set obj = CreateObject("Microsoft.XMLHTTP")
    obj.Open "GET", "http://WEB/VEREXE.txt", False
    obj.send
    respuesta = obj.responseText

    Debug.Print "La respuesta es: " & respuesta
    tX = LeerInt(App.Path & "\INIT\Update.ini")
    DifX = iX - tX
    
    If Not (DifX = 0) Then
    If MsgBox("Se descargarán " & DifX & "actualizaciones, ¿Continuar?", vbYesNo) = vbYes Then
    ProgressBar1.Visible = True

            Call addConsole("Iniciando, se descargarán " & DifX & " actualizaciones.", 200, 200, 200, True, False)   '>> Informacion
        For i = 1 To DifX
            Inet1.AccessType = icUseDefault
            dNum = i + tX
            
  
            Inet1.URL = "http://WEB/Parche" & dNum & ".zip" 'Host
            
            Directory = App.Path & "\INIT\Parche" & dNum & ".zip"
            bDone = False
            dError = False
            
            'lURL.Caption = Inet1.URL
            'lName.Caption = "Parche" & dNum & ".zip"
            'lDirectorio.Caption = App.Path & "\"
                
            frmMain.Inet1.Execute , "GET"
            
            Do While bDone = False
            DoEvents
            Loop
            
            If dError Then Exit Sub
            
            UnZip Directory, App.Path & "\"
            Kill Directory
        Next i
    End If
     End If
    
    Call GuardarInt(App.Path & "\INIT\Update.ini", iX)
    
    Image2.Enabled = True
    Call addConsole("Cliente actualizado correctamente.", 255, 255, 0, True, False)
    Call Reproducir_WAV(App.Path & "\Wav\Actualizado.wav", SND_FILENAME)
    ProgressBar1.value = 0

If MsgBox("¿Deseas Jugar?", vbYesNo) = vbYes Then
    Call ShellExecute(Me.hWnd, "open", App.Path & "/Loudren AO.exe", "", "", 1)
    End
 Else
    End
End If

End Sub

Private Sub Form_Load()
ProgressBar1.Picture = LoadPicture(App.Path & "\Graficos\AU_BarraVacia.jpg")
Image2.Picture = LoadPicture(App.Path & "\Graficos\AU_Buscar_N.jpg")
Image1.Picture = LoadPicture(App.Path & "\Graficos\AU_Salir_N.jpg")
frmMain.Picture = LoadPicture(App.Path & "\Graficos\AU_Main.jpg")
ProgressBar1.value = 0
'ProgressBar1.Height = 0
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image2.Picture = LoadPicture(App.Path & "\Graficos\AU_Buscar_N.jpg")
Image1.Picture = LoadPicture(App.Path & "\Graficos\AU_Salir_N.jpg")
End Sub

Private Sub Image1_Click()
Image1.Picture = LoadPicture(App.Path & "\Graficos\AU_Salir_A.jpg")
End
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image1.Picture = LoadPicture(App.Path & "\Graficos\AU_Salir_A.jpg")
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image1.Picture = LoadPicture(App.Path & "\Graficos\AU_Salir_I.jpg")
End Sub
Private Sub Image2_Click()
Image2.Enabled = False
Image2.Picture = LoadPicture(App.Path & "\Graficos\AU_Buscar_A.jpg")
Call Analizar

'Call addConsole("Buscando Actualizaciones...", 255, 255, 255, True, False)

End Sub

Private Sub Image2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image2.Picture = LoadPicture(App.Path & "\Graficos\AU_Buscar_A.jpg")
End Sub

Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image2.Picture = LoadPicture(App.Path & "\Graficos\AU_Buscar_I.jpg")
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
    Select Case State
        Case icError
            Call addConsole("Error en la conexión, descarga abortada.", 255, 0, 0, True, False)
            bDone = True
            dError = True
        Case icResponseCompleted
            Dim vtData As Variant
            Dim tempArray() As Byte
            Dim FileSize As Long
            
            FileSize = Inet1.GetHeader("Content-length")
            ProgressBar1.Max = FileSize
            
            Call addConsole("Descarga iniciada.", 0, 255, 0, True, False)
            
            Open Directory For Binary Access Write As #1
                vtData = Inet1.GetChunk(1024, icByteArray)
                DoEvents
                
                
                Do While Not Len(vtData) = 0
                    tempArray = vtData
                    Put #1, , tempArray
                    
                vtData = Inet1.GetChunk(1024, icByteArray)
                    
                    ProgressBar1.value = ProgressBar1.value + Len(vtData) * 2
                    LSize.Caption = (ProgressBar1.value + Len(vtData) * 2) / 1000000 & "MBs de " & (FileSize / 1000000) & "MBs"
                    ProgressBar1.Text = "[" & CLng((ProgressBar1.value * 100) / ProgressBar1.Max) & "% Completado.]"

                    DoEvents
                Loop
            Close #1
            
            Call addConsole("Descarga finalizada", 0, 255, 0, True, False)
            LSize.Caption = FileSize & "bytes"
            ProgressBar1.value = 0
            
            bDone = True
    End Select
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub

Private Function LeerInt(ByVal Ruta As String) As Integer
    F = FreeFile
    Open Ruta For Input As F
    LeerInt = Input$(LOF(F), #F)
    Close #F
End Function

Private Sub GuardarInt(ByVal Ruta As String, ByVal data As Integer)
    F = FreeFile
    Open Ruta For Output As F
    Print #F, data
    Close #F
End Sub
 
Arriba