SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: jojojorge en Miércoles 25 de Junio de 2008, 11:45

Título: leer linea de texto masm32
Publicado por: jojojorge en Miércoles 25 de Junio de 2008, 11:45
hola a todos

les cuento que me surgió una duda.
en c estándar existe una función para leer de un archivo de texto una sola linea. en c++ es getline() pero quisiera hacer lo mismo pero en masm32 usando winapi la funcion readfile te lee todo el archivo entero pero yo quiero solo una linea y poder escoger cual linea.
no se que opciones tengo
o es que tengo que cargar todo el archivo en memoria y de la memoria sacar las lineas.

salu2:)

y que cambio el del foro no entre en mucho tiempo esta con mas pinta.
Título: Re: leer linea de texto masm32
Publicado por: Eternal Idol en Miércoles 25 de Junio de 2008, 11:56
Si queres imitar la funcion getline entonces depurala y aprende que es lo que hace para poder repetirlo.

ReadFile no lee todo un archivo sino la cantidad de bytes que se le pida, la forma mas simple y menos eficiente de lograr lo que queres es simplemente leer byte a byte hasta encontrar el terminador de linea (en Windows rn). Tambien podes cargar el archivo en memoria, si son archivos de texto normalmente no hay problema pero todo dependera del tamaño del archivo ... 4GB no es muy recomendable cargar en memoria.
Título: Re: leer linea de texto masm32
Publicado por: jojojorge en Miércoles 25 de Junio de 2008, 12:38
Hola

pues es lo que me temía.
pues supongo que la función getline lee el archivo caracter por caracter hasta toparse con el fin de cadena al llegar al fin de linea el puntero queda al inicio de la nueva linea.

creo que lo mas conveniente sera cargar el archivo en memoria ya que al ser un txt no pesa casi nada.
lo de leer caracter por caracter seria algo un poco tonto pero también tiene que funcionar.

y una pregunta cual es el caracter de fin de linea y el de fin de archivo el de fin de cadena es un 0 o ''
el de fin de linea es 0D o 0A o los 2 juntos, supongo que puedo usar solo 0A
el caracter de fin de archivo no tengo idea e cual sea pero me puedo guiar por el tamaño del archivo.

salu2
Título: Re: leer linea de texto masm32
Publicado por: Eternal Idol en Miércoles 25 de Junio de 2008, 13:29
No se que hace getline, puede usar un buffer de X tamaño - digamos 4KB - perfectamente, eso dependera de la implementacion.

No hay ningun caracter de fin de archivo, si vas a usar ReadFile (http://msdn.microsoft.com/en-us/library/aa365467(VS.85).aspx) lee su documentacion, como te dije antes fin de linea en Windows es rn (0Dh, 0Ah) (http://en.wikipedia.org/wiki/CRLF).
Título: Re: leer linea de texto masm32
Publicado por: jojojorge en Sábado 28 de Junio de 2008, 06:14
hola
gracias por las respuestas ya conseguí lo que quería.
incluso cambiando el caracter de fin de linea por otro cualquiera pude leer también párrafos.

salu2:)
Título: Re: leer linea de texto masm32
Publicado por: Eternal Idol en Sábado 28 de Junio de 2008, 13:21
De nadas  B)