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 - Karcrack

#761
Cita de: LeandroA en 30 Agosto 2010, 23:37 PM
Hola y no es valido asi?


Private Function ItoA03(lNumb As Long) As String
   ItoA03 = lNumb
End Function
No, no vale :¬¬ :¬¬ Eso es trampa! :xD No se porque pero cuando yo lo prove era mas lento :¬¬
Ale, pues otra cosa mas a la que superar :laugh:

MOD: Hace lo mismo que CStr internamente, asi que realmente es lo mismo :P
#762
Código (vb) [Seleccionar]
Public Function ItoA03(ByVal lNumb As Long) As String
    Dim bvRet(10)   As Byte
    Dim i           As Long
    Dim b           As Boolean
   
    b = lNumb < 0
    If b Then lNumb = -lNumb
   
    i = 10
   
    Do
        bvRet(i) = 48 + (lNumb Mod 10)
        lNumb = lNumb \ 10
        i = i - 1
    Loop While lNumb
   
    If b Then bvRet(i) = 45
   
    ItoA03 = SysAllocStringLen(bvRet(i), 10 - i)
End Function

http://www.xbeat.net/vbspeed/download/TLB_string.zip

Mas rapido que Str(), pero no mas que CStr() :-\
#763
Este es mi primer intento, no es mas rapido que CStr() ni Str(), pero he tenido una idea a ver si me sale, luego intento >:D
Código (vb) [Seleccionar]
Public Static Function ItoA02(ByVal lNumb As Long) As String
    Dim sTable(9)   As String
    Dim b           As Boolean
    Dim x           As Boolean
   
    x = CBool(lNumb And &H80000000)
    If x Then lNumb = (lNumb Xor x) - x
   
    If b = False Then
        sTable(0) = "0":        sTable(1) = "1"
        sTable(2) = "2":        sTable(3) = "3"
        sTable(4) = "4":        sTable(5) = "5"
        sTable(6) = "6":        sTable(7) = "7"
        sTable(8) = "8":        sTable(9) = "9"
        b = True
    End If
    Do
        ItoA02 = sTable(lNumb Mod 10) & ItoA02
        lNumb = lNumb \ 10
    Loop While lNumb
   
    If x Then x = False: ItoA02 = "-" & ItoA02
End Function

#764
Cita de: *PsYkE1* en 30 Agosto 2010, 22:29 PM
Una cosilla de nada:
Si quitas el indicador en el For ahorras un poquitin (muy poco) de tiempo... ;)
http://foro.rthacker.net/programacion-visual-basic/como-acelerar-codigo-en-vb6/

DoEvents¡! :P
Estas equivocado :P
http://www.xbeat.net/vbspeed/c_ForNext.htm
Despite all rumors: Next or Next i does NOT matter at all!! The minimal differences you see in the timings above are totally insignificant: you could produce any possible ranking order by running the same test over and over again long enough.

Esa pequeña diferencia de tiempo va a favor de uno u otro dependiendo de cada vez que lo ejecutas...
#765
Aqui esta, como siempre, la forma logica:
Código (vb) [Seleccionar]
Public Function ItoA01(ByVal lNumb As Long) As String
    ItoA01 = Str$(lNumb)
End Function
#766
No os parece que ha pasado muchisimo desde el ultimo reto? :rolleyes: :xD

Pues este es bien simple... la forma mas rapida de pasar de numero a cadena...

Ej:
1337 -> "1337"

Por asi decirlo es un reemplazo a Str()

Ha de recibir Long y devolver String.
Ha de aceptar numeros negativos.

Venga, a codear!
#767
Cita de: cobein en 10 Julio 2010, 05:31 AM
Hay un error en el codigo, despues lo corrijo.
Bueno, el error para quien quiera saberlo es que comprobaba mal la multiplicidad de 5...



Me he quedado hoy pensando... y hay una forma realmente sencilla de obtener el ultimo digito de una cifra... sin usar cadenas de textoooo :o Simplemente hay que obtener el resto al dividir por 10 (aka Mod 10) :laugh:

He hecho este codigo :D, si no me equivoco es la mas rapida (sin contar la de Cobein, que no acaba de funcionar)
Código (vb) [Seleccionar]
Public Function IsItPrime(ByVal lNumber As Long) As Boolean
    Dim i       As Long

    If lNumber < 10 Then
        If lNumber = 2 Then IsItPrime = True: Exit Function
        If lNumber = 5 Then IsItPrime = True: Exit Function
        If lNumber = 1 Then Exit Function
    ElseIf (lNumber And 1) Then
        Select Case (lNumber Mod 10)
            Case 1, 3, 7, 9
                For i = 3 To Sqr(lNumber) Step 2
                    If (lNumber Mod i) = 0 Then Exit Function
                Next i
                IsItPrime = True
        End Select
    End If
End Function
#768
Cita de: goldarg en 30 Agosto 2010, 19:55 PM
Uso el vb6 profesional en español, el acerca de.. dice version 8176 VBA:6.0.8169
Form3 12.0.6510.5004

saludos
Prueba ahora los codigos ;)
#769
Cita de: goldarg en 30 Agosto 2010, 18:07 PM
sip, eso el lo que hice, copie y pegue tal cual lo hiciste vos(no me voy a poner a tipear jaja re fiaca)... re loco que a mi no me hace nada... pero bueno...
Que interesante... dime, que version del VB6 estas utilizando? Español? Ingles? SP6?
Y sobre que W$ corre?

Por lo visto ha pasado algo con Geshi y se han quitado los caracteres especiales.. .ahora lo arreglo :-\

Cita de: MCKSys Argentina en 30 Agosto 2010, 18:30 PM
Es por el famoso "evil type convertion"??
No estoy familiarizado con ese termino... :-\ Simplemente se trata de meter caracteres especiales para hacer creer al VB6 que son variables en vez de numeros :)
#770
Respecto a mi segunda pregunta, puedo establecer una estructura (por ejemplo la del PEB) desde una sección de codigo ASM? O tengo que meterlo en otra variable y luego establecerlo con esa, que es como lo hacia yo hasta ahora...