• Miércoles 6 de Noviembre de 2024, 06:29

Autor Tema:  Re: Microsoft Internet Transfer Control  (Leído 835 veces)

elmarce

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Microsoft Internet Transfer Control
« en: Martes 12 de Agosto de 2003, 12:37 »
0
Hola,
tengo una aplicacion donde tengo que subir un fichero por ftp de forma binaria y utilizo este control y hasta aqui todo correcto el problema que la aplicacion en el cliente el fichero lo sube en ascii y me gustaria saber si se puede formar este control para que siempre suba el fichero en binario.
Muchas gracias.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Microsoft Internet Transfer Control
« Respuesta #1 en: Miércoles 13 de Agosto de 2003, 08:31 »
0
Me da la sensación que tu problema no está en cómo 'se sube' el fichero, sino más bien en cómo lo lees.

Si abres el fichero en modo binario (OPEN fichero FOR BINARY AS #numero) y mediante el método GET puedes leer uno o más bytes del fichero, almacenando el valor de cada byte en una variable o en un elemento de una matriz.

El valor Lo verás según el tipo de datos de la variable: si la variable es de tipo byte, lo verás como un número en decimal del 0 al 255, si es carácter lo verás como el caracter ascii correspondiente al valor del byte, ...

Podrías usar una función de este tipo para obtener el valor binario de un número decimal como ceros y unos en una cadena (aunque no sé cómo ira el rendimiento). Si el parámetro 'RevByteOrder' es True, indica que el orden de los bits que componen el número están en orden inverso, es decir, primero el bit más significativo :

Public Function Binario(ByVal NumBase 10 as Long,Optional ByVal RevByteOrder As Boolean) As String
   
    Dim intExp As Integer
    Dim str1 As String
    Dim int1 As Integer

    Do While True
        If 2 ^ intExp > NumBase10 Then
            If intExp > 0 Then
                intExp = intExp - 1
            End If
            Exit Do
        End If
        intExp = intExp + 1
    Loop

    If Not RevByteOrder Then

        For int1 = intExp To 0 Step -1
            If NumBase10 < (2 ^ int1) Then
                str1 = "0" & str1
            Else
                str1 = "1" & str1
                NumBase10 = NumBase10 - (2 ^ int1)
            End If
        Next int1

    Else

        For int1 = intExp To 0 Step -1
            If NumBase10 < (2 ^ int1) Then
                str1 = str1 & "0"
            Else
                str1 = str1 & "1"
                NumBase10 = NumBase10 - (2 ^ int1)
            End If
        Next int1

    End If

    Binario = str1

End Function

Espero que esto te vaya bien... Saludos y suerte.