by Verhoven » Sat Jul 27, 2013 11:02 am
Gracias Manuel, pero si ves el código de los mensajes de Antonio que quedan incorporados al último post anterior mío el programa ha quedado funcionando bien.
El asunto consiste en que hay un programa que genera datos en un fichero muy grande y necesito ir separando los comando (alfabético solo) de sus valores (dígitos decimales). Como es un volumen muy grande de datos necesito una función C que lo haga lo más rápido posible, y se nota de hecho que es más rápido desarrollado en C. Las cadenas me llegan como: CmdCRKg00123 y necesito sacar por un lado la parte de caracteres y por otro la del número, de ahí la necesidad de desarrollar esa función.
Lo que hago es con el puntero que manda el PRG a la función C mediante hb_parc( nº de orden del argumento pasado a la función ) copiar los datos a una variable nueva dentro del código C para trabajar con ella:
Primero se reserva memoria para una variable llamada "cadena" donde se copiará la cadena, valga la redundancia, pasada a la función C.
Se copia la cadena pasada a la función a esa variable.
Se va inspeccionando caracter por caracter para ver si es un dígito.
Cuando encuentra el primer dígito coloca en esa posición una marca de final de cadena '\0': con *pIndex = '\0' ó *pIndex = 0.
Devuelve al PRG el puntero de la variable "cadena", modificada con ese '\0' insertado, de forma que el PRG cuando lo encuentre da por concluida la cadena en esa posición de memoria omitiendo con ello la parte numérica de la cadena original.
Termina liberando la memoria reservada para la variable cadena.
Se tarda más en explicarlo que en hacerlo.