Ver Mensaje Individual
  #40  
Antiguo 29-06-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Hola Diego, lo más natural sería de que tengas dos archivos: el primero para llevar el registro de tus usuarios y el segundo para llevar registros de sus IMC.

Ahora bien, realizar esto con archivos no es tan fácil puesto que deberás tener mucho código para mantener la referencia entre uno y otro. Si optas por este diseño debes tener el primer archivo una estructura como la siguiente:

ID_USUARIO - NOMBRE - APELLIDO - PASSWORD

Ese ID_USUARIO será un identificador, y se lo empleará para distinguir a un usuario de otro, por tanto el ID_USUARIO debe ser único a cada persona. El cantidato más firme a ser identificador es el DNI ya que no hay dos personas que tengan un mismo DNI. O si deseas, puedes asignarle cualquier numero. Por ejemplo, al primero que se registra le corresponde el ID 1, al segundo el 2, etc...

Ahora viene lo duro, el segundo archivo necesita tener una referencia hacia un ID_USUARIO para hacer la coincidencia. Nuestro segundo archivo como mínimo debe llevar la siguiente estructura:

FECHA - REF_USUARIO - MIC

¿Que es ese REF_USUARIO, pues básicamente este campo tendrá el valor de ID_USUARIO al que le pertenecen dichos datos. Por ejemplo, si existe un usuario cuyo ID es 123456, entonces cada uno de sus registros tendrá una forma como la siguiente:

xx/xx/xx - 123456 - 20
xx/xx/xx - 123456 - 25
...
yy/yy/yy - 568541 - 15

¿Cómo hacemos para obtener exclusivamente sus datos? Muy fácil: recorrer el archivo de punta punta e ir buscando solo aquellos cuyo valor REF_USUARIO es igual al ID_USUARIO de la persona que se logueó.

Cuando se procesa a registrar un nuevo valor de MIC, deberá bastar con ingresarlo al final del archivo y sin olvidar llenar el REF_USUARIO para que posteriormente podamos recuperar sus datos.

Como podrás comprobar esta manera de llevar a cabo el archivo te separa a los usuarios de los registros de IMC pero requiere de mayor código.

La manera en que tu lo estás llevando al archivo es básica, y el problema se presenta cuando debes recorrer todos los datos de una misma persona.
Otra posibilidad de conseguir esto es un solo archivo. Pero a mi modo de ver es contraproducente ya que terminas registrando duplicados.
Una opción es que si deseas llevar un solo archivo es que insertes los datos ordenados por usuarios, de modo que sólo bastaría recorrer los datos desde la posición que le pertenece a dicho usuario hasta que se encuentre al siguiente. Por ejemplo:

NOMBRE1
APELLIDO1
PASSWORD1
MIC1-1
MIC1-2
MIC1-3
NOMBRE2
APELLIDO2
PASSWORD2
MIC2-1
....

Pero el algoritmo para extraer adecuadamente los datos debe ser capaz de manerar una cantidad variable de MICs. Por tanto induce a otro código un tanto enrreversado.

La tercera alternativa: cuando se crea un usuario, que se cree un archivo destinado a guardar sus propios MICs. De modo que solo puede bastar con levar un registro para hacer corresponder un archivo con un usuario. Algo como esto:

NOMBRE - APELLIDO - PASSWORD - NOMBRE_ARCHIVO

De modo que al loguearse al sistema, se lee este NOMBRE_ARCHIVO, se lo abre y se recorren sus datos.

Esas son las opciones que tienes. Todas requieren de más o menos código, deberás analizar cual de todas esas opciones te conviene.

Una cuarta opción es que te pases a estudiar bases de datos y te olvides de archivos y código para recorrer los datos, que abrir y cerrar... pero no se que tan preparado te sientas para aprender sobre esto.

Con respecto a obtener la fecha de hoy lo más fácil es emplear la función Now que devuelve la fecha y hora. Por ejemplo:

Código Delphi [-]
Mivariable := Now;

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita