Crear Downloader?

Iniciado por shaggikpo, 8 Noviembre 2009, 03:22 AM

0 Miembros y 1 Visitante están viendo este tema.

shaggikpo

El tema es que estoy haciendo un downloader que lee la lista de archivos a descargar de un archivo ini pero me quede trancado en la parte donde leo el archvio ini por secciones usando un bucle for:
Código (vb) [Seleccionar]

Sub Bajar()
Dim i As Long
FILES = LeerIni("FILES", "Count", TEMP & "\" & nomArchivo)

For i = 1 To FILES
    FILE = "file" & i
    Direccion = LeerIni(FILE, "url", TEMP & "\" & nomArchivo)
    Descr = LeerIni(FILE, "descr", TEMP & "\" & nomArchivo)
    Checksum = LeerIni(FILE, "newchecksum", TEMP & "\" & nomArchivo)
    LocalFile = LeerIni(FILE, "localversion", TEMP & "\" & nomArchivo)
    Comprimido = LeerIni(FILE, "compressed", TEMP & "\" & nomArchivo)
    List1.ListItems.Add = Descr
   
    'Download (Direccion)
Next

End Sub

COmo puedo hacer para almacenar en alguna varible estos datos y despues leerlos.
Es decir ya que cada ves que se recorre el bucle las variables son sobreescritas

BlackZeroX

solo se me ocurre un metodo con clases, pero es algo enredado si te lo explico pero aun asi haber si te sirve xP

Una Clase con las siguientes variables:


    IDClass' Este seria el ID de la clase algo asi como el md5 de algo, mas no del archivo descrito por "File & i"
    Direccion
    Descr
    Checksum
    LocalFile
    Comprimido

Despues declaras las propiedades Get y Let de la clase respectiva )
Para el uso al principio de tu programa cargas TODO el INI en las dichosas clases (Que se crean apartir de una mtriz tipo clase)
Despues haces lo que te plasca con tu archivo ini, al dado caso el archivo ya estara cargado en el programa en las dichas clases.
De esta forma si modificas el ini puedes obtar por obtener la configuracion anterior que se cargo en el archivo ini.
The Dark Shadow is my passion.

shaggikpo

GRacias por responer d tan rapido.
Podrias poner un ejemplo, es que con este prgrama estoy bastante liado ya, aun me queda terminar el CRCChechsum y lo demas.

shaggikpo

Creo que ya lo he solucionado:
Cree un Array asi:

Código (vb) [Seleccionar]
Private Type Lista
    Direccion As String
    Descr As String
    Checksum As String
    LocalFile As String
    Destino As String
    Comprimido As String
End Type
Dim Down() As Lista
'Y lo lleno asi
Sub Obtener_Lista()
Dim i As Long
FILES = LeerIni("FILES", "Count", TEMP & "\" & nomArchivo)
ReDim Preserve Down(1 To FILES)
For i = 1 To FILES
    FILE = "file" & i
    Down(i).Direccion = LeerIni(FILE, "url", TEMP & "\" & nomArchivo)
    Down(i).Descr = LeerIni(FILE, "descr", TEMP & "\" & nomArchivo)
    Down(i).Checksum = LeerIni(FILE, "newchecksum", TEMP & "\" & nomArchivo)
    Down(i).LocalFile = LeerIni(FILE, "localversion", TEMP & "\" & nomArchivo)
    Down(i).Comprimido = LeerIni(FILE, "compressed", TEMP & "\" & nomArchivo)
    List1.ListItems.Add = Down(i).Descr
    'Download (Direccion)
Next

End Sub

danicasasm

Una variante podria ser esta:
Código (vb) [Seleccionar]

Private Type Lista
    Direccion As String
    Descr As String
    Checksum As String
    LocalFile As String
    Destino As String
    Comprimido As String
End Type

dim Coleccion as new Collection
dim Datos as Lista

Dim Down() As Lista
'Y lo lleno asi
Sub Obtener_Lista()
Dim i As Long
FILES = LeerIni("FILES", "Count", TEMP & "\" & nomArchivo)

For i = 1 To FILES
    FILE = "file" & i
    Datos.Direccion = LeerIni(FILE, "url", TEMP & "\" & nomArchivo)
    Datos.Descr = LeerIni(FILE, "descr", TEMP & "\" & nomArchivo)
    Datos.Checksum = LeerIni(FILE, "newchecksum", TEMP & "\" & nomArchivo)
    Datos.LocalFile = LeerIni(FILE, "localversion", TEMP & "\" & nomArchivo)
    Datos.Comprimido = LeerIni(FILE, "compressed", TEMP & "\" & nomArchivo)
    List1.ListItems.Add = Datos.Descr
    'Download (Direccion)

    Coleccion.add Datos
Next




BlackZeroX

#5
@danicasasm

Es una vaiante que ocuparia mas recursos de procesador al momento de buscar un dicho registro con la instruccion  "each".

Aqui dejo algo del codigo que posteo el autor de este hilo a como yo lo haria:


OJO son dos funciones alternativas usar solo una segun se desee:

Código (vb) [Seleccionar]



Private Type Lista
    Direccion                   As String
    Descr                       As String
    Checksum                    As String
    LocalFile                   As String
    Destino                     As String
    Comprimido                  As String
End Type

Dim Down()                      As Lista

' //    Get_List devuelve la cantidad de registros cargados o anidados.
' //---------------------------------------------------------------------
' //    NRegToADD   = LeerIni("FILES", "Count", TEMP & "\" & nomArchivo)
' //    Structr     = Structr
' //    RegCon      = True/False
Public Function Get_List(ByVal NRegToADD As Long, ByRef Structr() As Lista, ByVal RegCon As Boolean) As Long
Dim I                               As Long
Dim Salto                           As Boolean
Dim CantRegEx                       As Long

    If NRegToADD <= 0 Then Salto = True                             ' //    Se agregara algo?
    If Salto = False Then
        If RegCon And Not (Not (Structr) = -1) Then                 ' //    Se continua o se resetea? y esta inicialisada la matriz?
            CantRegEx = UBound(Structr) - LBound(Structr)           ' //    Cantidad de Registros actuales
            ReDim Preserve Structr(CantRegEx + NRegToADD)           ' //    Se continua
        Else
            ReDim Structr(NRegToADD - 1)                            ' //    Se Resetea
        End If
        For I = LBound(Structr) To UBound(Structr)                  ' //    Se inicia en 0 pero aun asi uso lbound()
            File = "file" & I
            Structr(I).Direccion = LeerIni(File, "url", TEMP & "\" & nomArchivo)
            Structr(I).Descr = LeerIni(File, "descr", TEMP & "\" & nomArchivo)
            Structr(I).Checksum = LeerIni(File, "newchecksum", TEMP & "\" & nomArchivo)
            Structr(I).LomocalFile = LeerIni(File, "localversion", TEMP & "\" & nomArchivo)
            Structr(I).Comprimido = LeerIni(File, "compressed", TEMP & "\" & nomArchivo)
        Next
        Get_List = I                                                ' //    Se devuelve la cantidad de registros cargados
    End If
End Function


' //    Get_List devuelve la cantidad de registros cargados o anidados.
' //---------------------------------------------------------------------
' //    strfile     = TEMP & "\" & nomArchivo
' //    Structr     = Structr
' //    RegCon      = True/False
Public Function Get_ListFromFileIni(strFile As String, ByRef Structr() As Lista, ByVal RegCon As Boolean) As Long
Dim I                               As Long
Dim Salto                           As Boolean
Dim CantRegEx                       As Long
Dim NRegToADD                       As Long
   
    NRegToADD = LeerIni("FILES", "Count", strFile)                  ' //    cargamos la cantidad de registros a cargar
    If NRegToADD <= 0 Then Salto = True                             ' //    Se agregara algo?
    If Salto = False Then
        If RegCon And Not (Not (Structr) = -1) Then                 ' //    Se continua o se resetea? y esta inicialisada la matriz?
            CantRegEx = UBound(Structr) - LBound(Structr)           ' //    Cantidad de Registros actuales
            ReDim Preserve Structr(CantRegEx + NRegToADD)           ' //    Se continua
        Else
            ReDim Structr(NRegToADD - 1)                            ' //    Se Resetea
        End If
        For I = LBound(Structr) To UBound(Structr)                  ' //    Se inicia en 0 pero aun asi uso lbound()
            File = "File" & I
            Structr(I).Direccion = LeerIni(File, "url", strFile)
            Structr(I).Descr = LeerIni(File, "descr", strFile)
            Structr(I).Checksum = LeerIni(File, "newchecksum", strFile)
            Structr(I).LomocalFile = LeerIni(File, "localversion", strFile)
            Structr(I).Comprimido = LeerIni(File, "compressed", strFile)
        Next
        Get_ListFromFileIni = I                                     ' //    Se devuelve la cantidad de registros cargados
    End If
End Function




Dulces Lunas!¡.
The Dark Shadow is my passion.