| 
	
		|  Autor | Tema: [RETO] Entero a cadena  (Leído 8,949 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 = "-" & ItoA02End 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
 Mas rapidohttp://www.xbeat.net/vbspeed/download/TLB_string.zipque Str() , pero no mas que CStr()  |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| LeandroA | 
 
Hola y no es valido asi? Private Function ItoA03(lNumb As Long) As StringItoA03 = 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 StringItoA03 = 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 StringItoA03 = 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 | 
 
 |  |  |  |  |  
 
	
 
   |