elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 74
51  Programación / Programación Visual Basic / Re: [RETO] Proyect Euler 1 en: 24 Enero 2013, 19:39 pm
Bueno esta es la mía, pero solo responde el enunciado de la pagina no tiene mas opciones.

Código
  1. Private Function Euler1_LeandroA() As Long
  2.  
  3.    Dim i As Long, lResult As Long, lSum As Long
  4.  
  5.    For i = 1 To 999 \ 3 Step 3
  6.        lSum = lSum + (i * 9) + 9
  7.    Next
  8.  
  9.    For i = 1 To 999 \ 5 Step 5
  10.        lResult = (i * 25) + 25
  11.        If (lResult Mod 15) Then lSum = lSum + lResult
  12.    Next
  13.  
  14.    Euler1_LeandroA = lSum - 15
  15.  
  16. End Function
  17.  
52  Programación / Programación Visual Basic / Re: [RETO] Proyect Euler 1 en: 23 Enero 2013, 20:38 pm
Hola yo la verdad, no entiendo, en primer instancia dice que  3, 5, 6 and 9 son los que estan por devajo de 10, hasta hay todo bien, pero luego sus resultados no me son coherentes con esta lógica (aunque segun la pagina el resultado final es correcto)

pero por ejemplo el ejemplo de Danyfirex, solo mirando los primeros números de multiplos de 3 imprime esto
Citar
1             2             4             5             7             8             10            11

y no veo que el 2 sea un múltiplo de 3 , ni el resto de los siguientes.

ami la logica me dice algo asi,
Código
  1. Private Sub Form_Load()
  2.    Dim i As Long
  3.    Dim lSum As Long
  4.    Dim lResult As Long
  5.  
  6.    For i = 1 To 1000000
  7.        lResult = 3 * i
  8.        If lResult >= 1000 Then
  9.            Exit For
  10.        Else
  11.            lSum = lSum + lResult
  12.        End If
  13.  
  14.    Next
  15.  
  16.    For i = 1 To 1000000
  17.        lResult = 5 * i
  18.  
  19.        If lResult >= 1000 Then
  20.            Exit For
  21.        Else
  22.            lSum = lSum + lResult
  23.        End If
  24.  
  25.    Next
  26.  
  27.    Debug.Print lSum
  28. End Sub
  29.  

porque estoy equivocado???






53  Programación / Programación Visual Basic / Re: [RETO] Ruta más oculta en: 15 Enero 2013, 18:51 pm
Hola Karcrack, en principio pense que no se podia crear una carpeta con un punto por delante, almenos el explorer de windows no te deja, ahora que lo mencionas cree una carpeta con el vb y si se pude, asi que si hay que modificar ese filtro
no entiendo la diferncia de  iterativa a recursiva, como seria iterativa?

Saludos.
54  Programación / Programación Visual Basic / Re: [RETO] Ruta más oculta en: 15 Enero 2013, 01:57 am
Si es verdad FindFirstFileEx es un poco mas rapida, almenos vajo W7 o W8 aqui para que prueben, la diferencia se nota si utilizan las flags FindExInfoBasic  o FindExInfoStandard, la primera hace que la funcion no rellene  cAlternate de la extructura WIN32_FIND_DATA, con lo cual hace que sea has rapida.

Código
  1. Option Explicit
  2. Private Declare Function FindFirstFileEx Lib "kernel32.dll" Alias "FindFirstFileExA" (ByVal lpFileName As String, ByVal fInfoLevelId As FINDEX_INFO_LEVELS, lpFindFileData As WIN32_FIND_DATA, ByVal fSearchOp As FINDEX_SEARCH_OPS, ByRef lpSearchFilter As Any, ByVal dwAdditionalFlags As Long) As Long
  3. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  4. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  5. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  6. Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
  7. Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
  8. Private Declare Function GetVersion Lib "kernel32.dll" () As Long
  9.  
  10. Private Const MAX_PATH                  As Long = 260
  11. Private Const INVALID_HANDLE_VALUE      As Long = -1
  12.  
  13. Private Type FILETIME
  14.    dwLowDateTime As Long
  15.    dwHighDateTime As Long
  16. End Type
  17.  
  18. Private Type WIN32_FIND_DATA
  19.    dwFileAttributes As Long
  20.    ftCreationTime As FILETIME
  21.    ftLastAccessTime As FILETIME
  22.    ftLastWriteTime As FILETIME
  23.    nFileSizeHigh As Long
  24.    nFileSizeLow As Long
  25.    dwReserved0 As Long
  26.    dwReserved1 As Long
  27.    cFileName As String * MAX_PATH
  28.    cAlternate As String * 14
  29. End Type
  30.  
  31. Private Enum FINDEX_INFO_LEVELS
  32.    FindExInfoStandard
  33.    FindExInfoBasic
  34.    FindExInfoMaxInfoLevel
  35. End Enum
  36.  
  37. Private Enum FINDEX_SEARCH_OPS
  38.    FindExSearchNameMatch
  39.    FindExSearchLimitToDirectories
  40.    FindExSearchLimitToDevices
  41.    FindExSearchMaxSearchOp
  42. End Enum
  43.  
  44. 'FIND FLAGS
  45. Private Const FIND_FIRST_EX_CASE_SENSITIVE = 0
  46. Private Const FIND_FIRST_EX_LARGE_FETCH = 2
  47.  
  48. Private c_cFolders  As Collection
  49. Private m_Max As Long
  50. Private m_IsW7OrLater As Boolean
  51.  
  52. Public Function GetLastFolder(ByVal sStartPath As String) As Collection
  53.    Dim lR As Long
  54.  
  55.    lR = GetVersion
  56.    If ((lR And &HFF) > 5) And (((lR And &HFF00&) \ &H100) > 0) Then m_IsW7OrLater = True
  57.    m_Max = 0
  58.    Set c_cFolders = New Collection
  59.    sStartPath = IIf(Right$(sStartPath, 1) = "\", sStartPath, sStartPath & "\")
  60.    pvFindFolders sStartPath, 0
  61.    Set GetLastFolder = c_cFolders
  62. End Function
  63.  
  64.  
  65. Private Sub pvFindFolders(sPath As String, lMax As Long)
  66.  
  67.    Dim lRet                As Long
  68.    Dim lhSearch            As Long
  69.    Dim tWFD                As WIN32_FIND_DATA
  70.    Dim svDirs()            As String
  71.    Dim lCount              As Long
  72.    Dim sDir                As String
  73.    Dim i                   As Long
  74.    Dim sFolder             As String
  75.  
  76.  
  77.    If m_IsW7OrLater Then
  78.        lhSearch = FindFirstFileEx(sPath & "*", FindExInfoBasic, tWFD, FindExSearchNameMatch, 0&, FIND_FIRST_EX_LARGE_FETCH)
  79.    Else
  80.        lhSearch = FindFirstFileEx(sPath & "*", FindExInfoStandard, tWFD, FindExSearchNameMatch, 0&, FIND_FIRST_EX_CASE_SENSITIVE)
  81.    End If
  82.    'lhSearch = FindFirstFile(sPath & "*", tWFD)
  83.  
  84.    If Not lhSearch = INVALID_HANDLE_VALUE Then
  85.  
  86.        Do
  87.            If (tWFD.dwFileAttributes And vbDirectory) = vbDirectory Then
  88.  
  89.                sFolder = Left$(tWFD.cFileName, lstrlen(tWFD.cFileName))
  90.                If InStrB(sFolder, ".") <> 1 Then
  91.                    sDir = sPath & sFolder
  92.  
  93.                    ReDim Preserve svDirs(lCount)
  94.                    svDirs(lCount) = sDir & "\"
  95.                    lCount = lCount + 1
  96.  
  97.                    If lMax > m_Max Then
  98.                        m_Max = lMax
  99.                        Set c_cFolders = New Collection
  100.                        Call c_cFolders.Add(sDir)
  101.                    ElseIf lMax = m_Max Then
  102.                        Call c_cFolders.Add(sDir)
  103.                    End If
  104.  
  105.                End If
  106.            End If
  107.  
  108.            lRet = FindNextFile(lhSearch, tWFD)
  109.        Loop While lRet
  110.  
  111.        Call FindClose(lhSearch)
  112.  
  113.  
  114.        For i = 0 To lCount - 1
  115.            Call pvFindFolders(svDirs(i), lMax + 1)
  116.        Next
  117.  
  118.    End If
  119.  
  120. End Sub
  121.  
  122.  
  123.  
  124. Private Sub Form_Load()
  125.    Dim cColl As Collection
  126.    Dim i As Long
  127.    Dim T As Long
  128.  
  129.    T = GetTickCount
  130.    Set cColl = GetLastFolder("C:\Users\Windows\")
  131.    Debug.Print GetTickCount - T
  132.  
  133.    For i = 1 To cColl.Count
  134.        Debug.Print cColl(i)
  135.    Next
  136. End Sub
  137.  
55  Programación / Programación Visual Basic / Re: [RETO] Ruta más oculta en: 12 Enero 2013, 20:53 pm
Ojo dependiendo el método la función puede ser mas rápida la segunda vez que se ejecuta, por lo tanto debe medirse en varios bucles.

esta es la mia
Código
  1. Option Explicit
  2. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  3. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  4. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  5. Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
  6.  
  7. Private Const MAX_PATH                  As Long = 260
  8. Private Const INVALID_HANDLE_VALUE      As Long = -1
  9.  
  10. Private Type FILETIME
  11.    dwLowDateTime As Long
  12.    dwHighDateTime As Long
  13. End Type
  14.  
  15. Private Type WIN32_FIND_DATA
  16.    dwFileAttributes As Long
  17.    ftCreationTime As FILETIME
  18.    ftLastAccessTime As FILETIME
  19.    ftLastWriteTime As FILETIME
  20.    nFileSizeHigh As Long
  21.    nFileSizeLow As Long
  22.    dwReserved0 As Long
  23.    dwReserved1 As Long
  24.    cFileName As String * MAX_PATH
  25.    cAlternate As String * 14
  26. End Type
  27.  
  28. Private c_cFolders  As Collection
  29. Private m_Max As Long
  30.  
  31. Public Function GetLastFolder(ByVal sStartPath As String) As Collection
  32.    m_Max = 0
  33.    Set c_cFolders = New Collection
  34.    sStartPath = IIf(Right$(sStartPath, 1) = "\", sStartPath, sStartPath & "\")
  35.    pvFindFolders sStartPath, 0
  36.    Set GetLastFolder = c_cFolders
  37. End Function
  38.  
  39.  
  40. Private Sub pvFindFolders(sPath As String, lMax As Long)
  41.  
  42.    Dim lRet                As Long
  43.    Dim lhSearch            As Long
  44.    Dim tWFD                As WIN32_FIND_DATA
  45.    Dim svDirs()            As String
  46.    Dim lCount              As Long
  47.    Dim sDir                As String
  48.    Dim i                   As Long
  49.    Dim sFolder             As String
  50.  
  51.    lhSearch = FindFirstFile(sPath & "*", tWFD)
  52.  
  53.    If Not lhSearch = INVALID_HANDLE_VALUE Then
  54.  
  55.        Do
  56.            If (tWFD.dwFileAttributes And vbDirectory) = vbDirectory Then
  57.  
  58.                sFolder = Left$(tWFD.cFileName, lstrlen(tWFD.cFileName))
  59.                If InStrB(sFolder, ".") <> 1 Then
  60.                    sDir = sPath & sFolder
  61.  
  62.                    ReDim Preserve svDirs(lCount)
  63.                    svDirs(lCount) = sDir & "\"
  64.                    lCount = lCount + 1
  65.  
  66.                    If lMax > m_Max Then
  67.                        m_Max = lMax
  68.                        Set c_cFolders = New Collection
  69.                        Call c_cFolders.Add(sDir)
  70.                    ElseIf lMax = m_Max Then
  71.                        Call c_cFolders.Add(sDir)
  72.                    End If
  73.  
  74.                End If
  75.            End If
  76.  
  77.            lRet = FindNextFile(lhSearch, tWFD)
  78.        Loop While lRet
  79.  
  80.        Call FindClose(lhSearch)
  81.  
  82.  
  83.        For i = 0 To lCount - 1
  84.            Call pvFindFolders(svDirs(i), lMax + 1)
  85.        Next
  86.  
  87.    End If
  88.  
  89. End Sub
  90.  


Código
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.    Dim cColl As Collection
  5.    Dim i As Long
  6.  
  7.    Set cColl = GetLastFolder("C:\Users\Windows\")
  8.  
  9.    For i = 1 To cColl.Count
  10.        Debug.Print cColl(i)
  11.    Next
  12. End Sub
56  Programación / Programación Visual Basic / Re: Ayuda para crear encriptador de texto a base64 en vb6.0 en: 27 Diciembre 2012, 02:46 am
Hola te paso de dos forma la primera un modulo clase llamado Base64Class y la segunda al estilo vbscript.

Base64Class
Código
  1. Option Explicit
  2.  
  3. Private Const Equals As Byte = 61    'Asc("=")
  4.  
  5. Private Const Mask1 As Byte = 3      '00000011
  6. Private Const Mask2 As Byte = 15     '00001111
  7. Private Const Mask3 As Byte = 63     '00111111
  8. Private Const Mask4 As Byte = 192    '11000000
  9. Private Const Mask5 As Byte = 240    '11110000
  10. Private Const Mask6 As Byte = 252    '11111100
  11.  
  12. Private Const Shift2 As Byte = 4
  13. Private Const Shift4 As Byte = 16
  14. Private Const Shift6 As Byte = 64
  15.  
  16. Private Base64Lookup() As Byte
  17. Private Base64Reverse() As Byte
  18.  
  19. Public Function EncodeString(Text As String) As String
  20.  
  21.   Dim Data() As Byte
  22.  
  23.   Data = StrConv(Text, vbFromUnicode)
  24.   EncodeString = EncodeByteArray(Data)
  25.  
  26. End Function
  27.  
  28. Public Function EncodeByteArray(Data() As Byte) As String
  29.  
  30.   Dim EncodedData() As Byte
  31.  
  32.   Dim DataLength As Long
  33.   Dim EncodedLength As Long
  34.  
  35.   Dim Data0 As Long
  36.   Dim Data1 As Long
  37.   Dim Data2 As Long
  38.  
  39.   Dim l As Long
  40.   Dim m As Long
  41.  
  42.   Dim Index As Long
  43.  
  44.   Dim CharCount As Long
  45.  
  46.   DataLength = UBound(Data) + 1
  47.  
  48.   EncodedLength = (DataLength \ 3) * 4
  49.   If DataLength Mod 3 > 0 Then EncodedLength = EncodedLength + 4
  50.   EncodedLength = EncodedLength + ((EncodedLength \ 76) * 2)
  51.   If EncodedLength Mod 78 = 0 Then EncodedLength = EncodedLength - 2
  52.   ReDim EncodedData(EncodedLength - 1)
  53.  
  54.   m = (DataLength) Mod 3
  55.  
  56.   For l = 0 To UBound(Data) - m Step 3
  57.      Data0 = Data(l)
  58.      Data1 = Data(l + 1)
  59.      Data2 = Data(l + 2)
  60.      EncodedData(Index) = Base64Lookup(Data0 \ Shift2)
  61.      EncodedData(Index + 1) = Base64Lookup(((Data0 And Mask1) * Shift4) Or (Data1 \ Shift4))
  62.      EncodedData(Index + 2) = Base64Lookup(((Data1 And Mask2) * Shift2) Or (Data2 \ Shift6))
  63.      EncodedData(Index + 3) = Base64Lookup(Data2 And Mask3)
  64.      Index = Index + 4
  65.      CharCount = CharCount + 4
  66.  
  67.      If CharCount = 76 And Index < EncodedLength Then
  68.         EncodedData(Index) = 13
  69.         EncodedData(Index + 1) = 10
  70.         CharCount = 0
  71.         Index = Index + 2
  72.      End If
  73.   Next
  74.  
  75.   If m = 1 Then
  76.      Data0 = Data(l)
  77.      EncodedData(Index) = Base64Lookup((Data0 \ Shift2))
  78.      EncodedData(Index + 1) = Base64Lookup((Data0 And Mask1) * Shift4)
  79.      EncodedData(Index + 2) = Equals
  80.      EncodedData(Index + 3) = Equals
  81.      Index = Index + 4
  82.   ElseIf m = 2 Then
  83.      Data0 = Data(l)
  84.      Data1 = Data(l + 1)
  85.      EncodedData(Index) = Base64Lookup((Data0 \ Shift2))
  86.      EncodedData(Index + 1) = Base64Lookup(((Data0 And Mask1) * Shift4) Or (Data1 \ Shift4))
  87.      EncodedData(Index + 2) = Base64Lookup((Data1 And Mask2) * Shift2)
  88.      EncodedData(Index + 3) = Equals
  89.      Index = Index + 4
  90.   End If
  91.  
  92.   EncodeByteArray = StrConv(EncodedData, vbUnicode)
  93.  
  94. End Function
  95.  
  96. Public Function DecodeToString(EncodedText As String) As String
  97.  
  98.   Dim Data() As Byte
  99.  
  100.   Data = DecodeToByteArray(EncodedText)
  101.   DecodeToString = StrConv(Data, vbUnicode)
  102.  
  103. End Function
  104.  
  105. Public Function DecodeToByteArray(EncodedText As String) As Byte()
  106.  
  107.   Dim Data() As Byte
  108.   Dim EncodedData() As Byte
  109.  
  110.   Dim DataLength As Long
  111.   Dim EncodedLength As Long
  112.  
  113.   Dim EncodedData0 As Long
  114.   Dim EncodedData1 As Long
  115.   Dim EncodedData2 As Long
  116.   Dim EncodedData3 As Long
  117.  
  118.   Dim l As Long
  119.   Dim m As Long
  120.  
  121.   Dim Index As Long
  122.  
  123.   Dim CharCount As Long
  124.  
  125.   EncodedData = StrConv(Replace$(Replace$(EncodedText, vbCrLf, ""), "=", ""), vbFromUnicode)
  126.  
  127.   EncodedLength = UBound(EncodedData) + 1
  128.   DataLength = (EncodedLength \ 4) * 3
  129.  
  130.   m = EncodedLength Mod 4
  131.   If m = 2 Then
  132.      DataLength = DataLength + 1
  133.   ElseIf m = 3 Then
  134.      DataLength = DataLength + 2
  135.   End If
  136.  
  137.   ReDim Data(DataLength - 1)
  138.  
  139.   For l = 0 To UBound(EncodedData) - m Step 4
  140.      EncodedData0 = Base64Reverse(EncodedData(l))
  141.      EncodedData1 = Base64Reverse(EncodedData(l + 1))
  142.      EncodedData2 = Base64Reverse(EncodedData(l + 2))
  143.      EncodedData3 = Base64Reverse(EncodedData(l + 3))
  144.      Data(Index) = (EncodedData0 * Shift2) Or (EncodedData1 \ Shift4)
  145.      Data(Index + 1) = ((EncodedData1 And Mask2) * Shift4) Or (EncodedData2 \ Shift2)
  146.      Data(Index + 2) = ((EncodedData2 And Mask1) * Shift6) Or EncodedData3
  147.      Index = Index + 3
  148.   Next
  149.  
  150.   Select Case ((UBound(EncodedData) + 1) Mod 4)
  151.   Case 2
  152.      EncodedData0 = Base64Reverse(EncodedData(l))
  153.      EncodedData1 = Base64Reverse(EncodedData(l + 1))
  154.      Data(Index) = (EncodedData0 * Shift2) Or (EncodedData1 \ Shift4)
  155.   Case 3
  156.      EncodedData0 = Base64Reverse(EncodedData(l))
  157.      EncodedData1 = Base64Reverse(EncodedData(l + 1))
  158.      EncodedData2 = Base64Reverse(EncodedData(l + 2))
  159.      Data(Index) = (EncodedData0 * Shift2) Or (EncodedData1 \ Shift4)
  160.      Data(Index + 1) = ((EncodedData1 And Mask2) * Shift4) Or (EncodedData2 \ Shift2)
  161.   End Select
  162.  
  163.   DecodeToByteArray = Data
  164.  
  165. End Function
  166.  
  167. Private Sub Class_Initialize()
  168.  
  169.   Dim l As Long
  170.  
  171.   ReDim Base64Reverse(255)
  172.  
  173.   Base64Lookup = StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", vbFromUnicode)
  174.  
  175.   For l = 0 To 63
  176.      Base64Reverse(Base64Lookup(l)) = l
  177.   Next
  178.  
  179. End Sub
  180.  

mas corta
Código
  1.  
  2. Public Function DecodeBase64(ByVal strData As String) As Byte()
  3.    Dim objXML As Object
  4.    Dim objNode As Object
  5.  
  6.    Set objXML = CreateObject("MSXML2.DOMDocument")
  7.    Set objNode = objXML.createElement("b64")
  8.    objNode.dataType = "bin.base64"
  9.    objNode.Text = strData
  10.    DecodeBase64 = objNode.nodeTypedValue
  11.  
  12.    Set objNode = Nothing
  13.    Set objXML = Nothing
  14.  
  15. End Function
  16.  
  17.  
  18. Public Function EnecodeBase64(ByVal strData As String) As Byte()
  19.    Dim objStream As Object
  20.    Dim objNode As Object
  21.    Dim objXML As Object
  22.    Dim bArray() As Byte
  23.  
  24.    Set objStream = CreateObject("ADODB.Stream")
  25.  
  26.    With objStream
  27.        .Type = 2
  28.        .Open
  29.        .Charset = "unicode"
  30.        .WriteText strData
  31.        .Flush
  32.        .Position = 0
  33.        .Type = 1
  34.        .read (2)
  35.        bArray = .read
  36.        .Close
  37.    End With
  38.  
  39.    Set objXML = CreateObject("MSXML2.DOMDocument")
  40.    Set objNode = objXML.createElement("b64")
  41.  
  42.    objNode.dataType = "bin.base64"
  43.    objNode.nodeTypedValue = bArray
  44.    EnecodeBase64 = objNode.Text
  45.  
  46.    Set objStream = Nothing
  47.    Set objNode = Nothing
  48.    Set objXML = Nothing
  49.  
  50. End Function
  51.  

57  Programación / Programación Visual Basic / Re: [Reto] UrlEncode y UrlDecode en: 19 Diciembre 2012, 07:27 am
Tiro una utilizando las funciones de javascript, haciendo unos malabares para preservar una url valida

Código
  1. Public Function URLEncode(ByVal sUrl As String) As String
  2.    Dim objSC As Object
  3.    Dim sPart() As String
  4.    sPart = Split(sUrl, "?")
  5.    If UBound(sPart) > 0 Then
  6.        Set objSC = CreateObject("ScriptControl")
  7.        objSC.Language = "Jscript"
  8.        sPart(1) = objSC.CodeObject.encodeURIComponent(sPart(1))
  9.        sPart(1) = Replace(sPart(1), "%3D", "=")
  10.        sPart(1) = Replace(sPart(1), "%26", "&")
  11.        Set objSC = Nothing
  12.    End If
  13.    URLEncode = Join(sPart, "?")
  14. End Function
  15.  
  16. Public Function URLDecode(ByVal sUrl As String) As String
  17.    Dim objSC As Object
  18.    Set objSC = CreateObject("ScriptControl")
  19.    objSC.Language = "Jscript"
  20.    URLDecode = objSC.CodeObject.decodeURIComponent(sUrl)
  21.    Set objSC = Nothing
  22. End Function
  23.  

PD utiliza coficiación utf8
alguien sabe si CreateObject("ScriptControl") es valido para una pc que no tenga instaldo el vb?, o es una libreria que trae  windows
58  Programación / Programación Visual Basic / Re: [Reto] UrlEncode y UrlDecode en: 19 Diciembre 2012, 04:28 am
bien, ya estoy algo confuso, cobein probé con InternetCanonicalizeUrl no se si pueda decir si funciona o no es algo que no me queda claro, el api trabaja igual que  UrlEscape pero no codifica los caracteres al igual que cuando los copio de la barra del navegador, de todas formas la url parce andar bien.

Código
  1. Option Explicit
  2. Private Declare Sub InternetCanonicalizeUrl Lib "wininet.dll" Alias "InternetCanonicalizeUrlA" (ByVal lpszUrl As String, ByVal lpszBuffer As String, ByRef lpdwBufferLength As Long, ByVal dwFlags As Long)
  3. Private Const INTERNET_MAX_URL_LENGTH As Long = 2048
  4. Private Const ICU_BROWSER_MODE As Long = &H2000000
  5. Private Const ICU_DECODE As Long = &H10000000
  6. Private Const ICU_ENCODE_PERCENT As Long = &H1000
  7. Private Const ICU_ENCODE_SPACES_ONLY As Long = &H4000000
  8. Private Const ICU_NO_ENCODE As Long = &H20000000
  9. Private Const ICU_ESCAPE As Long = &H80000000
  10. Private Const ICU_NO_META As Long = &H8000000
  11.  
  12.  
  13. Private Sub Form_Load()
  14.    Debug.Print UrlEncode("https://www.google.com.ar/search?q=canción animal")
  15.    'https://www.google.com.ar/search?q=casa%20duplex&num=10&hl=es&safe=off&biw=1680&bih=925&sa=X&ei=mS7RUIqvHYjW8gSA9oHABg&ved=0CBkQpwUoAw&source=lnt&tbs=cdr%3A1%2Ccd_min%3A5%2F12%2F2012%2Ccd_max%3A18%2F12%2F2012&tbm=isch
  16.    Debug.Print UrlEncode("https://www.google.com.ar/search?q=casa duplex&num=10&hl=es&safe=off&biw=1680&bih=925&sa=X&ei=mS7RUIqvHYjW8gSA9oHABg&ved=0CBkQpwUoAw&source=lnt&tbs=cdr:1,cd_min:5/12/2012,cd_max:18/12/2012&tbm=isch")
  17. End Sub
  18.  
  19. Private Function UrlEncode(sURL As String, Optional ByVal SpacePlus As Boolean) As String
  20.  
  21.    Dim sBuffer As String, lBufferLength As Long
  22.  
  23.    sBuffer = String$(INTERNET_MAX_URL_LENGTH, 0)
  24.    lBufferLength = INTERNET_MAX_URL_LENGTH
  25.    InternetCanonicalizeUrl sURL, sBuffer, lBufferLength, ICU_ENCODE_PERCENT Or (ICU_ENCODE_SPACES_ONLY * SpacePlus)
  26.    If lBufferLength > 0 Then UrlEncode = Left$(sBuffer, lBufferLength)
  27.  
  28. End Function
  29.  

@Danyfirex la función no va por mal camino pero al remplazar los "&" la url queda inservible.

59  Programación / Programación Visual Basic / [Reto] UrlEncode y UrlDecode en: 18 Diciembre 2012, 04:47 am
Hola, se me presento la necesidad de crear esas funciones y en la web encontré algunas pero no funcionan muy bien asi que me pareció interesante el reto, no es muy dificil (creo), pero es para ver quien las puede hacer funcionar mas rapido.

Código:
Public Function URLDecode(ByVal sURL As String, Optional ByVal SpacePlus As Boolean = True) As String
Public Function URLEncode(ByVal sURL As String, Optional ByVal SpacePlus As Boolean = True) As String
el segundo parametro es opcional para remplazar espacios por +

es practicamente como lo que hace esta web http://meyerweb.com/eric/tools/dencoder/



osea ingresamos

Citar
si usamos la funcion urlEncode deberia cambiar el acento
Citar
por lo visto esta pasado a utf8 y luego a hex
lo importante es que encode los parámetros no la url entera ya que sino dejaria de ser una url valida.

otro ejemplos
Citar

Citar

después iremos debatiendo que esta mal o que falta.
60  Programación / Programación Visual Basic / Re: Broma, cerrar sesion mensenger, cerrar ventanas y mostrar mensaje??? en: 11 Diciembre 2012, 20:33 pm
Hola, solo espera 20 dias y el mismisimo Microsoft te cerrara a ti y a tu amigo el mesengger para siempre. ;D
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 74
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines