[RETO] Entero a cadena

Iniciado por Karcrack, 30 Agosto 2010, 22:23 PM

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

Karcrack

 ::) ::)
Código (vb) [Seleccionar]
Public Function ItoA05(ByVal lNumb As Long) As String
    Call VarBstrFromI4(lNumb, 0, 0, ItoA05)
End Function

http://www.box.net/shared/51biuct9cd

Creo que mas rapido o corto imposible :P

Saludos :D

raul338

#11
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

BlackZeroX

.
Para mi LeandroA gano!¡.

P.D.: solo postee para decir, Que ojasos el de tu Gallo xP

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

MCKSys Argentina

@Karcrack: Lo de LeandroA es lo que se conoce como "evil type convertion" (lo que salto en el otro post)

Por las dudas, pongo el mio, aunque es muy parecido:

Private Function ItoA03(lNumb As Long) As String
    ItoA03 = "" & lNumb
End Function

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


ignorantev1.1

Una duda:

Como mido el tiempo?

Psyke1

#15
Cita de: ignorantev1.1 en  1 Septiembre 2010, 20:17 PM
Una duda:

Como mido el tiempo?

Con:

cTiming.cls

o con:

Código (vb) [Seleccionar]
Private Declare Function GetTickCount Lib "kernel32" () As Long

DoEvents¡! :P

ignorantev1.1

Pues si use el mentado "GetTickCount" pero me da 0, a lo mejor lo estoy haciendo mal, por eso pregunte:

dim x as long
x=GetTickCount
****llamo funcion****
msgbox GetTickCount-x

Psyke1

Un ej:

Código (vb) [Seleccionar]
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
   Dim t1 As Long
   Dim t2 As Long
 
   t1 = GetTickCount '1ª marca

   'Call Function
 
   t2 = GetTickCount '2ª marca
   
   MsgBox t2 - t1    'Resultado = diferencia entre marcas.

End Sub


DoEvents¡! :P

ignorantev1.1

Código (vb) [Seleccionar]
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
    Dim t1 As Long
    Dim t2 As Long

    t1 = GetTickCount '1ª marca

    Me.Print StrRaul01(-99999)
    t2 = GetTickCount '2ª marca
   
    MsgBox t2 - t1    'Resultado = diferencia entre marcas.

End Sub


Renuncio! siempre me da 0...

Psyke1

Ah, es que es tan poco tiempo que no se aprecia con GetTickCount... :silbar:
Mira prueba con cTiming.cls :

Un ej:

Código (vb) [Seleccionar]

Option Explicit

Dim tmr As CTiming

Private Sub Form_Load()
    Set tmr = New CTiming

    tmr.Reset

    Debug.Print StrRaul01(-99999)

    MsgBox tmr.Elapsed

End Sub


Resultado:
Citar0,28903007248116

Ahora si... :xD

DoEvents¡! :P