Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - raul338

#1991
Asi es :P

Unos hackers mientras desarrollaban un virus, hacian pruebas colgando la pc, se ofrecio enviar el tipico informe de errores -con codigo incluido- a microsoft, los hackers contestaron que si :xD

http://www.zdnet.com.au/hackers-accidentally-give-microsoft-their-code-339305548.htm
#1992
Esto se llama perder el tiempo reiventando el casting :xD

Código (vb) [Seleccionar]

Public Function StrRaul01(ByVal Number As Long) As String
   If Number And &H80000000 Then
       StrRaul01 = "-"
       Number = Number * -1
   End If
   If Number = 0 Then StrRaul01 = "0": Exit Function
   If Number = 1 Then StrRaul01 = "1": Exit Function
   
   Dim i As Byte
   Do While True
       i = Fix(Number Mod 10)
       Select Case i
           Case 1: StrRaul01 = StrRaul01 & "1"
           Case 2: StrRaul01 = StrRaul01 & "2"
           Case 3: StrRaul01 = StrRaul01 & "3"
           Case 4: StrRaul01 = StrRaul01 & "4"
           Case 5: StrRaul01 = StrRaul01 & "5"
           Case 6: StrRaul01 = StrRaul01 & "6"
           Case 7: StrRaul01 = StrRaul01 & "7"
           Case 8: StrRaul01 = StrRaul01 & "8"
           Case 9: StrRaul01 = StrRaul01 & "9"
           Case 0: StrRaul01 = StrRaul01 & "0"
       End Select
       Select Case Number
           Case Is > 10: Number = Number \ 10
           Case Is = 10
               StrRaul01 = StrRaul01 & "10"
               GoTo Final
           Case Is < 10
               GoTo Final
       End Select
   Loop
Final:
   StrRaul01 = StrReverse(StrRaul01)
   Dim s As String
   Dim t As Integer
   Dim l As Integer
   t = 1
   l = Len(StrRaul01)
   If l = 1 Then Exit Function
   For i = 1 To l
       If Mid$(StrRaul01, i, 1) = "0" Then
           t = t + 1
       Else
           StrRaul01 = Mid(StrRaul01, t)
           Exit Function
       End If
   Next
End Function


Al menos es mas rapido que el primer intento de karcrack xDDD
Voy a ver si logro agilizarlo
#1993
Naaa karcrack, yo tenia una idea parecida, pero me tuve que ir :¬¬ aver...si se me ocurre algo.....
#1994
Pues la verdad dudo que se pueda hacer una funcion taan rapida como la CStr o Str$... pero bueno, ya hare la mia :P
#1995
Cita de: *PsYkE1* en 29 Agosto 2010, 23:45 PM
Código (vb) [Seleccionar]

Public Function ReplaceFilter(ByVal sFilter As String) As String
   ' ...
   ReplaceFilter = Replace$(ReplaceFilter, " ", "|")
   ' ...
End Function


Sabes lo que pasaria si busco "el archivo con espacios en el nombre.doc"? :P

EDIT: Intenta poner eso en el buscador y winxp empieza a tirar fruta  :xD, asi que, esta bien tu codigo

Edit: En windows 7 no funciona poner "*.mp3 *.wav" porque no devuelve nada jeje...
#1996
Cita de: LeandroA en 29 Agosto 2010, 20:31 PM
MsgBox IsInFilter("a?????.bmp", "Aztsdfdfdseca.bmp") = true
deberia ser false

Cita de: raul338 en 29 Agosto 2010, 18:15 PM
Asi que si en caso fuera asi, habria que probar antes si el filtro concuerda con esta expresion regular
((?:\*|\?+)\.\w+\s?)+
La contra de este filtro es que no se va a poder mezclar con otros filtros... por lo que quedaria (codigo al vuelo, es muy probable de que tire algun error)

Jajaja toy quedando re pesado seguro, pero es lo que se me ocurrio a mi, la solucion, cambiar la expresion regular :P pero.... ahora no tengo tiempo (apenas me paso de a ratos por aca)
De todas formas, debe ser simple el reemplazo, capaz agregando un \w+ o .+ en el medio :P
#1997
Cita de: LeandroA en 29 Agosto 2010, 20:20 PM
hice un par de pruebas y no esta correcto.

MsgBox IsInFilter("*.bmp *jpg", "foto.bmp") = falso ( es verdadero)

MsgBox IsInFilter("*.bmp ????.jpg", "foto.jpg") = falso ( es verdadero)

MsgBox IsInFilter("*.bmp", "foto.bmp")  = falso ( es verdadero)

no se si se entendio bien

Leandro... no se si te diste cuenta, pero, lo estas usando al revez  :xD
De todas formas, cambiando el orden los parametros (o la firma) tiran true  ;D
Ahi cambie la firma en el codigo anterior...
#1998
Ahi esta!!! Sabia que era algo de FileInfo, pero busque "GetFileInfo" en google y nada :xD
#1999
Contestare en forma rapida, no dispongo de mucho tiempo. Al final tuve tiempo de mas y experimente un poco  ;)

lo que hay que hacer es reemplazar los filtros antes de pasarlos por expresiones regulares:

Reemplazar los puntos "." por "\."
Los comodines "?" representan un solo caracter: .
Los comodines "*" representan mas de un caracter: .+

Por lo que quedarian los filtros asi
Citar

casa *.bmp
casa .+\.bmp




???.bmp
...\.bmp




ar*.bmp
ar.+\.bmp

Hay un problema con este filtro
*.jpg *.bmp
si fuera por reemplazo quedaria asi
.+\.jpg .+\.bmp
pero eso no devolvera los valores esperados, ya que ninguno devolvera true salvo que sea bmp con ".jpg" en su nombre :P

Asi que si en caso fuera asi, habria que probar antes si el filtro concuerda con esta expresion regular
((?:\*|\?+)\.\w+\s?)+
La contra de este filtro es que no se va a poder mezclar con otros filtros... por lo que quedaria (codigo al vuelo, es muy probable de que tire algun error)

Código (vb) [Seleccionar]

' Basado en el de PySkE1
Public Function IsInFilter(ByVal sPatern As String, ByVal sText As String) As Boolean
Dim cTemp                               As New Collection
Dim oRegExp                             As Object
Dim oMatch                              As Object
Dim oMatches                            As Object
Dim i As Integer
   '# Para evitar las referencias :P
   Set oRegExp = CreateObject("VBScript.RegExp")
   With oRegExp
       .Pattern = "(\*|\?+)\.\w+"
       .Global = True
       .IgnoreCase = True
   End With
   Set oMatches = oRegExp.Execute(sPatern)
   
   sPatern = ReplaceFilter(sPatern)
   
   If oMatches.Count > 0 Then
       For Each oMatch In oMatches
           cTemp.Add oMatch.Value
       Next
       
       Dim vItem As Variant
       For Each vItem In cTemp
           vItem = ReplaceFilter(CStr(vItem))
           oRegExp.Pattern = vItem
           Set oMatches = oRegExp.Execute(sText)
           If oMatches.Count > 0 Then
               IsInFilter = True
               Exit Function
           End If
       Next
   Else
       oRegExp.Pattern = sPatern
       Set oMatches = oRegExp.Execute(sText)
       If oMatches.Count > 0 Then
           IsInFilter = True
           Exit Function
       End If
   End If
End Function

Public Function ReplaceFilter(Filtro As String) As String
   Filtro = Replace(Filtro, ".", "\.")
   Filtro = Replace(Filtro, "*", ".+")
   ReplaceFilter = Replace(Filtro, "?", ".")
End Function


Código (vb) [Seleccionar]

Private Sub Form_Load()
   Debug.Print IsInFilter("a.jpg", "?.jpg")
   Debug.Print IsInFilter("foto.jpg", "*.jpg")
   Debug.Print IsInFilter("foto.jpg", "*.jpg *.bmp")
   Debug.Print IsInFilter("foto.bmp", "*.jpg *.bmp")
   Debug.Print IsInFilter("cualquiera.blend", "*.jpg *.bmp")
End Sub


Espero que te sirva! :P
#2000
En realidad no es "objeto dentro de otro objeto" sino objeto dentro de un contenedor, no puedes meter un textbox dentro de un commandbutton (bueno, tal vez se pueda, pero no es lo comun que se busca)
Puedes meter algun control dentro de un frame, PictureBox o similar. Usando(set) la propiedad Container de los controles :)