Autor
|
Tema: [RETO] Entero a cadena (Leído 7,959 veces)
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
No os parece que ha pasado muchisimo desde el ultimo reto? Pues este es bien simple... la forma mas rapida de pasar de numero a cadena... Ej: Por asi decirlo es un reemplazo a Str()Ha de recibir Long y devolver String. Ha de aceptar numeros negativos. Venga, a codear!
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Aqui esta, como siempre, la forma logica: Public Function ItoA01(ByVal lNumb As Long) As String ItoA01 = Str$(lNumb) End Function
|
|
|
En línea
|
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Pues la verdad dudo que se pueda hacer una funcion taan rapida como la CStr o Str$... pero bueno, ya hare la mia
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
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 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
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
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()
|
|
|
En línea
|
|
|
|
LeandroA
|
Hola y no es valido asi? Private Function ItoA03(lNumb As Long) As String ItoA03 = lNumb End Function
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Hola y no es valido asi? Private Function ItoA03(lNumb As Long) As String ItoA03 = lNumb End Function
Jajajajajajaja Aun mas rapido que el mio!! LeandroA > PsYkE1 > Karcrack DoEvents¡!
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Naaa karcrack, yo tenia una idea parecida, pero me tuve que ir aver...si se me ocurre algo.....
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Hola y no es valido asi? Private Function ItoA03(lNumb As Long) As String ItoA03 = lNumb End Function
No, no vale Eso es trampa! No se porque pero cuando yo lo prove era mas lento Ale, pues otra cosa mas a la que superar MOD: Hace lo mismo que CStr internamente, asi que realmente es lo mismo
|
|
« Última modificación: 30 Agosto 2010, 23:54 pm por Karcrack »
|
En línea
|
|
|
|
|
|