Sábado 14 de Diciembre de 2024, 18:39
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
»
C++ Builder
(Moderador:
Eternal Idol
) »
Convertir De Int A Char O Viceversa??
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Convertir De Int A Char O Viceversa?? (Leído 12141 veces)
Ziara
Nuevo Miembro
Mensajes: 20
Convertir De Int A Char O Viceversa??
«
en:
Martes 1 de Abril de 2008, 20:12 »
0
Hola a todos, a ver si me pueden echar una mano.
tengo un ListView en vsReport, donde con:
Código: Text
int index = this->ListView->ItemIndex;
index = index + 1;
pinchando en cada fila/renglón del ListView, puedo saber a cuál pertenece, si pincho en la fila 1, index = 1 y así sucesivamente.
por otra tengo un .txt donde guardo información sobre cada renglón de la manera:
Código: Text
1
nombre:pepe
edad:14
ciudad:madrid
2
nombre:pepa
edad:25
ciudad:madrid
para leer del fichero uso:
Código: Text
FILE *OFile = fopen("fichero.txt","r");
char linea[50];
char c;
if (OFile == NULL)
{
ShowMessage("Error al abrir el fichero");
}
c = fgetc(OutFile);
donde fgetc devuelve el primer caracter leido, en este caso sería c = 1 ya que es el primer caracter del texto.
Lo que quiero es que cuando pinche sobre un renglón me lea justo la información que le toca, es decir, si pincho sobre el renglón 2, empiece a leer desde:
2
nombre:pepa
edad:25
ciudad:madrid
del fichero.txt
para ello he probado con:
Código: Text
if (c == index)
{
//fgets(linea, 50, OutFile);
ShowMessage("son iguales");
//while
}
else ShowMessage("ein??");
pero nunca se mete en el if, aunque c = 1 y index = 1, he pensando que era por que uno es del tipo char y otro es int, pero al forzar la conversión tampoco funciona.
como puedo convertir un int a un char o viceversa?
gracias.
Tweet
Elforious
Miembro activo
Mensajes: 44
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #1 en:
Martes 1 de Abril de 2008, 21:12 »
0
Puedes probar las funciones:
StrToInt( <variable String> ); Devuelve entero.
IntToStr( <variable String> ); Devuelve string.
Pero son de Borland; para más información acerca de estas funciones fijate en la ayuda.
Espero haber ayudado.
AnimaSubtilis
Miembro MUY activo
Mensajes: 172
Nacionalidad:
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #2 en:
Martes 1 de Abril de 2008, 22:42 »
0
que me acerde la funcion para convertir de entero a char es la atoi
n = atoi(str);
y funciona con la libreria stdlib.h o la stdio.h...
Espero que sirva de algo.....
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....
[/size]
[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]
Ziara
Nuevo Miembro
Mensajes: 20
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #3 en:
Miércoles 2 de Abril de 2008, 20:31 »
0
Hola de nuevo, ante todo gracias por contestar, he probado con las funciones.
La de StrToInt funciona muy bien:
Código: Text
int cline = StrToInt(linea[0]); //asi convierto el primer caracter de la linea a leer
pero luego he visto que cuando leo la segunda linea de mi fichero, que el primer carácter ya no es del tipo 1,2,3 sino una letra, la función me dice que no puede convertirlo a un entero. Con lo cual por ahi no puedo seguir.
Luego he probado con la función IntToStr de la siguiente manera:
Código: Text
int index = this->ListView->ItemIndex;
index = index + 1;
String s = IntToStr (index);
//leer desde fichero
FILE *OutFile = fopen("PAQUETES.txt","r");
char linea[50];
if (OutFile == NULL)
{
ShowMessage("Error al abrir el fichero");
}
fgets(linea, 50, OutFile);
if (linea[0] == s)
{
ShowMessage("encontrado");
ShowMessage(linea);
}
else ShowMessage("error");
fclose(OutFile);
pero aqui en el if no entra nunca, aunque linea[0] y s sean iguales... saben porque??
Elforious
Miembro activo
Mensajes: 44
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #4 en:
Martes 8 de Abril de 2008, 17:11 »
0
Lo que pasa es que estás comparando un String con un char.
Tienes que poner la función "c_str()" en el if así:
Código: Text
if (linea[0] == s.c_str())
c_str() te devuelve una cadena de carácteres que obtiene de un string, y en este caso te devuelve una cadena de 1, y así ya lo pudes comparar.
Pos si acaso, tu comparación está bien por que compara un solo caracter, pero para comparar una cadena de más de un caracter con otra, está la función "strcmp(<string1>,<string2>)" que devuelve 0 si son iguales los dos string.
Para más información chekea la ayuda.
Espero haber ayudado...
Ziara
Nuevo Miembro
Mensajes: 20
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #5 en:
Martes 8 de Abril de 2008, 19:48 »
0
Hola, gracias por contestar, he probado con c_str(), y al compilar builder me lanza el siguiente error:
cannot convert char to *char
así que he puesto:
Código: Text
if ((char*)linea[0] == s.c_str())
al compilar no me da ningún error, pero aún así no entra en el if. por qué?
Elforious
Miembro activo
Mensajes: 44
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #6 en:
Martes 8 de Abril de 2008, 22:51 »
0
mmm, me había olvidau de que el c_str() devuelve un puntero de cadena
y en este momento no se me ocurre como arreglar eso, pero analizando bien tu algoritmo, creo que le primero que posteaste estaba mejor, pero con el StrToInt:
Código: Text
if (StrToInt(c) == index)
Espero haber ayudado...
Ziara
Nuevo Miembro
Mensajes: 20
Re: Convertir De Int A Char O Viceversa??
«
Respuesta #7 en:
Miércoles 9 de Abril de 2008, 18:59 »
0
Ok, ya he encontrado la solución, con la ultima forma de convertir el string a int ya lo había probado, pero no podía continuar por ese camino ya que en el fichero tengo letras también, y cuando llegan a ellas builder me lanza un error de que no se puede convertir.
Al final he vuelto a mirar la funcion IntToStr y en vez de poner la condición:
Código: Text
if (linea[0] == IntToStr(index))
antes creo otra variable
Código: Text
String c = linea[0];
if (c == IntToStr(index))
así comparo string con string y no char con string que es lo que pasaba cuando ponia linea[0] en el if.
)
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
»
C++ Builder
(Moderador:
Eternal Idol
) »
Convertir De Int A Char O Viceversa??