Estilo programación funcional:No la he probado, así que es sólo teórico
Function ConvertAscii(ByRef as_Cadena As String) As StringOn Error GoTo xError Dim i As Integer, AsciiCode() As Byte AsciiCode = as_Cadena For i = LBound(AsciiCode) To UBound(AsciiCode) Step 2 ConvertAscii = ConvertAscii & Format(AsciiCode(i), ",00") Next i ConvertAscii = (i / 2) & ConvertAscii xError: If Err.Number > 0 Then ConvertAscii = Err.Description Err.Clear End IfEnd Function
errorSobrepasa: msgbox "Cada carácter de entrada genera entre 2 y 4 caracteres de salida. en VB6 el tamaño máximo de una cadena son 65535 caracteres, dicho valor se ha alcanzado con el " & k " ésimo carácter de la cadena de entrada..." & vbcrlf & err.description CadenaASCII=cadenanormal
Revisa el siguiente codigo, no esta bien.
F_Tanori, es excelente tu función.
Sí, tiene una coma de más al final Tienes un juicio discutible...
En cuanto a tu función inversa es demasiado código para algo tan sencillo.La inversa de la mía (donde la cadena lleva una coma al final):Mostrar/Ocultar Número de línea | Expandir/Contraer | Seleccionar todo 1. 2. Function ConvertString(ByRef str_Cadena As String) As String 3. 4. If str_Cadena = vbNullString Then 5. ConvertString = "" 6. Else 7. ConvertString = Chr(CInt(Left(str_Cadena, InStr(1, str_Cadena, ",") - 1))) & ConvertString(Right(str_Cadena, Len(str_Cadena) - InStr(1, str_Cadena, ","))) 8. End If 9. 10. End Function 11.
MOSKITO DICE:Tienes un juicio discutible...En cuanto a tu función inversa es demasiado código para algo tan sencillo.
MOSKITO DICE:El problema de la coma es fácilmente solucionable fuera de las funciones, así que no lo considero un error
CitarMOSKITO DICE:El problema de la coma es fácilmente solucionable fuera de las funciones, así que no lo considero un errorBien, y que me dices del primer caracter generado por tu funcion...?Código: Textprint convertstring("4,89,65,73,82,")YAIR
if len(cadenanormal)>16383 then msgbox "Existen posibilidades de que se produzca un error..." end if
Nuevamente, F_Tanori... muy bien por la función inversa.
Cuando digo:CitarNuevamente, F_Tanori... muy bien por la función inversa.No quiero decir que la de F_Tanori sea perfecta, de hecho no lo es...miremos el siguiente codigo... comparemos.Código: Textprint ConvertString_FTanori("4,89,65,73,82,15,65"),,cadenanormal("4,89,65,73,82,15,65")YAIRA YAIR A la izquierda la de Tanori; a la derecha, la mia¿Que paso?, parece que la de Tanori no usa el primer numero (4) como parametro de cantidad de lectura de la función Ahora si ven por que no es perfecta?
Error TanoriMiremos el sigueinte codigo:Código: TextFor i = LBound(AsciiCode) + 1 To UBound(AsciiCode) 'El limite superior no es el primer numero de la cadena?, o acaso es el numero de comas??
En cierta ocasion tuve que diseñar una funcion que me pasara una cadena de texto en sus equivalentes ASCII, pero con un formato especial, por ejemplo:"Hola mundo"El resultado debia ser:10,72,111,108,97,32,109,117,110,100,111Donde el primer numero indica el numero de caracteres de la cadena y los demas numeros son sus equivalentes ASCII
Moskito no se donde tiene la cabeza, su funcion tiene un error es el siguiente ejemplo:Mostrar/Ocultar Número de línea | Expandir/Contraer | Seleccionar todo 1. print convertstring("1")
La inversa de la mía (donde la cadena lleva una coma al final):
ocurrira un error sin una coma al final lo cual a mi si me parece un error
En cuanto a F_tanori...Cita de: "F_Tanori"ocurrira un error sin una coma al final lo cual a mi si me parece un error Otra tontería. Si consigues una función que haga un determinado trabajo de la forma más sencilla, me parece absurdo tirarla por la borda porque falte o deje de faltar una coma al final. Hay que subdividir los problemas hasta lo más sencillo posible y luego unirlos ¿Habéis oído hablar de Right() y Left() y concatenación?