Ver Mensaje Individual
  #8  
Antiguo 15-07-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 30
jachguate Va por buen camino
Hola.

El almacenar strings largos de longitud variable es un tema interesante y algo complicado, al igual hay varias formas de abordarlo.

Si tu archivo no va a tener muchos registros y no necesitas hacer movimientos rápidos dentro de él, sino podes limitarte a movimietnos secuenciales, podes utilizar un FileStream.

Así, yo lo que hago es primero almacenar en un entero de 32 bits la longitud del texto que sigue y luego ya se cuanto leer del stream. Por supuesto, esto anula cualquier capacidad Seek que querras darle a tu fichero.

Otra opción (la menos elegante) es almacenar en un archivo externo los datos de texto de cada registro, con lo que podes hacer busquedas secuenciales y movimientos rápidos del tipo Seek(NumeroRegistro).

Por último, podes utilizar dos ficheros, uno que contenga el registro con los datos de longitud fija y otro que contenga los datos de texto. De esta forma, en el primero podrias almacenar la posición inicial y la longitud del texto perteneciente al registro actual en el otro archivo, que sería un mar de letras (o una sopa, quizas... )

Esa solución, que puede ser la mas apropiada, sin embargo, es dificil de implementar de una forma eficiente, sobre todo si necesitas dar al usuario la capacidad de editar el texto (con lo que podria ya no caber la información en el espacio asignado originalmente y tendrias que moverla al final del archivo, o llevar un registro de los espacios disponibles donde podria caber. Inclusive podrias dividir el texto en varias partes... pero es complicado.

Te sugiero también que penses en la posibilidad de dejarle el trabajo sucio a una base de datos. Inclusive paradox.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita