[C con Clase] Almacenar texto de longitud indefinida

Paco Quintana FQUINTA en telefonica.net
Lun Nov 12 17:26:29 CET 2007


Programante escribió

Paco Quintana escribió:

>> Hola a todos. Soy usuario de C++ traajo con Dev-cpp y estoy planteandome 
>> un programa que sea el tipico fichero donde leer registros, 
>> modificarlos, añadir al fichero etc
>> Mi problema surge que un campo es de texto pero que creceria cada vez un 
>> pco mas.
>>   
>  
>
El problema no es que cada vez crezca un poco más, sino que no tiene 
tamaño máximo (de lo contrario, le ponemos al campo el tamaño máximo).

>> Ejemplo Programa simple de fichero para una consulta medica
>> Los campos serian el nombre del paciente, su ffecha de nacimiento, 
>> telefono localidad etc... en definitiva datos administrativos que 
>> podrian ser los datos miembro de longitud fija de una clase Paciente. El 
>> ultimo campo seria de tratamiento y este es el que me plantea dudas pues 
>> tiene que crecer con cada visita posterior del paciente. Como edito esa 
>> variable en pantalla (hablamos en modo consola) y como la almaceno ? en 
>> un fichero aparte con una referenciaa cada enfermo y dia de consulta ? 
>> Como la edito en pantalla ? Uno o dos ficheros, todos los campos 
>> formando parte de los datos miembro de la clase paciente o el campo 
>> tratamiento seria uno de los datos miembro de una nueva clase llamada 
>> evolucion junto con un long que fuera el numero de orden del paciente en 
>> el fichero de la clase paciente.
>> Espero vuestras ideas....
>> Afectuosamente
>> Francisco
>>   
>  
>
La forma más simple sería almacenar para el campo tratamiento el nombre 
de un archivo de texto (que crearías de forma única) donde guardar el 
tratamiento.

Si buscas algo más sofisticado, entonces podrías guardar un offset a un 
segundo fichero en el cual estarían los datos por bloques, con un 
formato similar a este:
struct { int Siguiente; char Contenido[1020]; } Cuando llenes Contenido 
para un tratamiento, estableces Siguiente a un nuevo bloque y sigues 
allí. Luego la aplicación une y separa los textos para editarlos de 
forma transparente.

Estupenda solución Programante.
Yo haabia pensado almacenar en un archivo de texto aparte lineas con el 
numero del paciente:Texto de tratamiento y al ser consecutivas se leeria 
el archivo de forma secuencial tokenizando cada linea y extrayendo el 
numero de paciente (ANTES DE LOS :) y el texto despues almacenandolo 
todo en una variable que sería la variable final a editar. El métdo del 
offset es mas rápido al ser de acceso aleatorio, me voy a poner a 
implementarlo.
Otra preguntita, como edito despues esa variable en pantalla, tendria 
que implementar un visor de texto de por ejemplo la mitad de pantalla 
pero como edito las liuneas, habria que implementar un editor de texto 
aunque fuera algo burdo. Alguna idea ??
Gracias nuevamente
Paco.





Más información sobre la lista de distribución Cconclase