PDA

Ver la Versión Completa : Una Compilación Que Hice Ahora


kbaby
27-06-2008, 19:50:19
Hola! Como saben algunos hace poco qu terminé las clases.. bien!! :p Bueno pero no es motivo para dejar de programar, así que seguí haciendo programas, probando cosas, toqueteando, "pensando en frio by: delphius".... etc etc.

Bueno aquí hice un programa que mientras veía la tele, se me ocurrió y dije voy a hacerlo... bueno tarde alrededor de una hora. Lo que tardé más fue en encontrar un fondo e iconos pero bueno xD.

Lo subí a rapidshare mi programa y quiero si pueden claro, que opinen sobre él, y si se os ocurren ideas para mejorarlo, hablad porfavor :D Tambien acepto las enhorabuenas :P

Se me olvidó decir, sirve para calcular el IMC. Pero hace más cosas... no sólo eso :P lleva un control de tu IMC puf muchas cosas :P

Baja mi compilación desde aquí:
Version 1.0: http://rapidshare.com/files/125455685/Programa.rar.html

Version 2.0: http://rapidshare.com/files/125477413/IMC.rar.html

- Las contraseñas salen con ****
- Arreglada la ortografía
- Algunos GroupBox no se iban ...
- Arreglado cuando te equivocas de contraseña para que se limpien los campos


==============EDITO=============

Tiene 2 fallos que encontre:
- Una falta de ortografia xD
- El GroupBox que aparece cuando registras a una persona se deberia ir al registrarla... pero se queda (un despiste).


** Ya he resubido el programa sin esos fallos.

Delphius
27-06-2008, 19:58:23
Hola kbaby,
No te prometo que voy a verlo ahora puesto que debo ausentarme, pero si más adelante me pudo dar unos minutos lo reviso.

¿Me quieres llamar gordo? Se que estoy un poquito pasado de peso... no necesito que me lo recuerde un programa:D:D:D jajaja.

Saludos,

kbaby
27-06-2008, 20:01:23
Jajaja xD Saber el IMC no viene nada mal yo lo tengo a 21 :P Jajaja

No pasa nada, voy a corregir los fallos y lo resubo para que no pase nada.

roman
27-06-2008, 20:13:45
¿Qué es el IMC?

// Saludos

kbaby
27-06-2008, 20:15:50
Es el indice de masa corporal. Con eso, los medicos te dicen tu grado de obesidad o de inferioridad del peso.

Un IMC bueno está entre 18-25. Si lo supera es obesidad. Si es menor es porque estas muuuy flaco.

Khronos
27-06-2008, 20:22:53
No esta mal :D

Me salio 20,42 mi IMC xD. Por cierto, te recomiendo que en los TEdits pongas las propiedad PasswordChar:=*.


Salu2

kbaby
27-06-2008, 20:24:12
Ala Esta perfect tu IMC. Pues voy a ponerlo jaja (hay alguna opcion para que en la tabla... se pueda poner en la celda donde sale el password.. ****)???.

Gracias!

felipe88
27-06-2008, 20:25:34
Y que tal, si solo limpias las casillas cuando te equivocas de usuario en vez de desaparecerlas...?.

Una idea :)

MAXIUM
27-06-2008, 20:29:16
Excelente, según esta aplicación, solo tengo 1 kilo demás.

Solo te resta validar un montón de cosas, pero esta bien para un principiante.

Por ejemplo, al máximizar... o registar un usuario, luego precionas en cargar el usuario y pones uno no valido, entonces vuelves a registrar y ooooohhhh ahí estan los datos del último con pass y todo.

kbaby
27-06-2008, 20:32:45
Y que tal, si solo limpias las casillas cuando te equivocas de usuario en vez de desaparecerlas...?.

Una idea :)

Gracias, ya puse tu idea en mi programa. Me gusto :D


Necesito esconder en la Celda que sale la contraseña... la contraseña, osea, que solo salga ******* xD

Gracias! ¿Como se ace?

roman
27-06-2008, 20:34:24
A mi me puso

http://img136.imageshack.us/img136/9295/pesoidealxw1.png (http://imageshack.us)

Por lo que obviamente se concluye que la aplicación es estupenda.

Sólo dos cosas:

1. En la pantalla de inicio de sesión está mal el orden de tabulación y
2. Deberías preguntar sólo el nombre de usuario y contraseña

// Saludos

kbaby
27-06-2008, 20:37:45
1. En la pantalla de inicio de sesión está mal el orden de tabulación

Eso me di cuenta al usarlo :S Pero es que soy muuuuuuyyy nuevo en delphi y en pascal.... y no se como arreglar eso :/

2. Deberías preguntar sólo el nombre de usuario y contraseña

Buena idea, pero los unicos datos que pido a la gente en el registro es nombre, apellidos y contraseña.

En el login tengo que pedir los 3 datos porque si pido nombre, puede haber muchas marias o unos hermanos con iguales apellidos :P.

Si puedes ayudarme a corregir la 1º te lo agradeceria.

felipe88
27-06-2008, 20:42:18
Por lo que obviamente se concluye que la aplicación es estupenda.

:rolleyes:...mmm... esa foto no asegura mucho, pero bueno :p

felipe88
27-06-2008, 20:43:58
Usa la propiedad TabOrder

eduarcol
27-06-2008, 20:46:57
Acabo de encontrar un error en el programa, dice que mi IMC es de 31.4076 :eek: y que obesidad tipo I, pues cuando mucho una pancita que ya hasta me estoy acostumbrado y comienzo a quererla, pero de ahi a llamarme gordo :eek:

Fenareth
27-06-2008, 20:48:55
Gracias kbaby... con tu mini aplicación me hiciste ver que debo empezar una dieta urgente :mad:...

Yo digo que debe estar haciendo algún calculo mal... :p :D :o...

Por lo demás, los comentarios sobre el Usuario y el hecho de que la Contraseñano se vea, son lo más importante que yo he visto...

Otra idea es que fuera guardando un historial de los cálculos que ha estado haciendo... probablemente ahí pueda yo notar las mejoras con la dieta :rolleyes: ;)

kbaby
27-06-2008, 20:51:50
Acabo de encontrar un error en el programa, dice que mi IMC es de 31.4076 :eek: y que obesidad tipo I, pues cuando mucho una pancita que ya hasta me estoy acostumbrado y comienzo a quererla, pero de ahi a llamarme gordo :eek:

Te recomiendo que lo hagas con papel y boli:

IMC: PESO/(ALTURA)^2

El ordenador no ze ekivoca :P

kbaby
27-06-2008, 20:53:45
Gracias kbaby... con tu mini aplicación me hiciste ver que debo empezar una dieta urgente :mad:...

Yo digo que debe estar haciendo algún calculo mal... :p :D :o...

Por lo demás, los comentarios sobre el Usuario y el hecho de que la Contraseñano se vea, son lo más importante que yo he visto...

Otra idea es que fuera guardando un historial de los cálculos que ha estado haciendo... probablemente ahí pueda yo notar las mejoras con la dieta :rolleyes: ;)

Eso ya es mucho para mi :P Jajaja :P Pero me voy aponer a investigarlo a ver si doy con la tecla. Me queda por averiguar como ocultar la contraseña en la tabla...

Aunque para ver las mejoras, cuando inicias sesion te indica tu último IMC y cuando lo calculas te indica tu IMC presente (no te lo guarda automaticamente) :P

kbaby
27-06-2008, 20:58:11
Hasta ahora, todos los cambios y sugerencias que me habeis dicho lo he aplicado. Seguid, me gustaria mejorarlo mucho :D.
Gracias felipe88 por lo del tabulador, ya aprendi otra cosa hoy jaja.

roman
27-06-2008, 21:10:48
:rolleyes:...mmm... esa foto no asegura mucho, pero bueno :p

No pensarás que pongo datos falsos ¿verdad? :D Además, no sólo estoy en mi peso ideal, sino que estoy prácticamente en el centro del rango que la aplicación marca como ideal para mi estatura, así que lo mejor de lo mejor :p :D

// Saludos

felipe88
27-06-2008, 21:23:37
Bueno pues yo creo que este hilo ha dado una apreciacion del estado de todos nosotros...

Demasiado tiempo sentados frente al PC :D
A ver muchachos, vamos todos... uno, dos , tres, cunclillas, lagartijas, caminen :D:D:D

kbaby
27-06-2008, 21:35:14
Jajaja :P Bueno aqui sigo esperando por si alguno sabeis ponerle encriptacion a una celda o columna en concreto. Gracias.

MAXIUM
27-06-2008, 21:57:41
vamos, esperando la v2.0 ;)

kbaby
27-06-2008, 22:06:27
Ya teneis la V2.0 con vuestras ideas aplicadas :P xD Uf me imagino cuando haga un programa de verdad si que voy a tener que modificar cosas xD jajaja.

felipe88
27-06-2008, 22:22:01
Ya teneis la V2.0 con vuestras ideas aplicadas :P xD Uf me imagino cuando haga un programa de verdad si que voy a tener que modificar cosas xD jajaja.

Y ya te estas "echando el agua sucia"...:rolleyes:, mejor piensa positivo, ya lograste poner en dieta a muchos :p

Fenareth
27-06-2008, 23:17:07
Jajaja :P Bueno aqui sigo esperando por si alguno sabeis ponerle encriptacion a una celda o columna en concreto. Gracias.

Prometí a mi amigo Delphius no volver a decir "encriptar" sino cifrar :o ;)...

Antes de guardar la información haz una pequeña modificación en la cadena de la contraseña, conviertela a su representación ASCII después haz alguna operacioncilla como sumarle o restarle algun número y regresala a caracteres para entonces guardarla...

Claro que necesitas después una operación inversa para que puedan coincidir la cadena guardada con la introducida por el usuario... :rolleyes:...

Saludos :)

Delphius
28-06-2008, 05:34:12
La descalibrada balanza que tengo en casa me indica que estoy pesando 66 kgr. Y con la versión 2.0 me da un flamante 25,78. Obesidad tipo I.

Veamos si estas nuevas caminatas mejoran mi condición...

Por ahora he visto la versión 2.0, ya veo la otra... ojalá diga menos:D

Saludos,

kbaby
28-06-2008, 08:57:08
Y ya te estas "echando el agua sucia"...:rolleyes:, mejor piensa positivo, ya lograste poner en dieta a muchos :p

Jajaja en serio!! No os pongais, yo estuve 3 meses a dieta y es duro :p Verduras verduras... se me puso cara rabbit xD

kbaby
28-06-2008, 09:00:18
Prometí a mi amigo Delphius no volver a decir "encriptar" sino cifrar :o ;)...

Antes de guardar la información haz una pequeña modificación en la cadena de la contraseña, conviertela a su representación ASCII después haz alguna operacioncilla como sumarle o restarle algun número y regresala a caracteres para entonces guardarla...

Claro que necesitas después una operación inversa para que puedan coincidir la cadena guardada con la introducida por el usuario... :rolleyes:...

Saludos :)

Fenareth vale :D ya solamente le dire cifrar jajaja.

Por ejemplo si la contraseña es Juanito... ¿cómo le sumo numeros?.

Huy! Huy! Se me está ocurriendo ahora mismo una cosa!!! Voy a probarla y ahora os cuento xD

Fenareth
28-06-2008, 14:58:07
...
Por ejemplo si la contraseña es Juanito... ¿cómo le sumo numeros?.

...

Tal vez podrías convertir cada caracter a su representación en ASCII en decimal :rolleyes:... no sé... es una idea... ;)

kbaby
28-06-2008, 23:43:51
Fenareth a mi se me había ocurrido hacer lo siguiente si la contraseña es "abuela" en la tabla aparece "12235111".

¿Por qué?

A -> 1
B -> 2
U -> 23
....
....
....

Según su lugar en el abecedario. Si la contraseña es "abuela23" aparece "12235111bc".

¿Por qué?

A -> 1
B -> 2
U -> 23
....
....
....
2 -> B
3 -> C

No se si es una buena idea pero tendría que probrar que me saliera (tambien puedo invertir la palabra aleuba...).

Lo que no se es como pasarlo a ASCII.

Delphius
29-06-2008, 00:05:24
Hola Diego,

Para lo que buscas, debes estudiar en la ayuda sobre Ord, Char. Esas son unas pistas que te doy.

Un algoritmo simple, para hacer claves o mensajes cifrados el algoritmo de césar. El cual lo que hace es correr la letra x lugares a la derecha. Por ejemplo, si viene una A, se la cambiaba por D, si viene una B, por una E, si viene la Z, se la cambia por C. ¿Se entiende?

Si buscas por Cesar en los foros talvez encuentres algo.

Saludos,

kbaby
29-06-2008, 00:10:29
Umh... te entiendo. Busqué en la wikipedia sobre el Cifrado de César.

Se me ocurrio que si la contraseña es 123 pues puedo cojer numero por numero:

A:= Caracter1º + 6 * 2;
B:= Caracter2º + 6 * 2;
...
...
...

Umh... esto para mi es de pensar en frio así que voy a pensarlo :P Lo que no se es si la contraseña es abuela si a la A le resto - 6... como sabe la pc que letra es... a no ser que le de valores A:= 1 ; B:= 2 ; ...

Delphius
29-06-2008, 00:22:41
Pues ese el asunto Diego, ¿como le decimos a la PC que recorra cíclicamente para evitar desbordes?

¿Otra pista?

¿Sabes lo que es el mod, o el resto de una división? ¿Que peculiaridad notas en el resto de una división? ¿El resto puede ser igual o mayor al divisor o dividendo?
Que yo sepa no. De hecho, el resto de una división se repite cíclicamente. Y el máximo valor que asume es uno menor a....

Te doy una ayudita:

1 mod 27 = 1
2 mod 27 = 2
...
26 mod 27 = 26
27 mod 27 = 0
28 mod 27 = 1
...

¿Te da alguna idea? Vamos... si buscas en los foros encontrarás la solución... hay temas sobre cesar, cifrado y encriptación como lo llaman algunos.

Saludos,

MAXIUM
29-06-2008, 01:08:02
Si ingreso un usuario nulo, puedo entrar incluso sin pass. Quítale la propiedad maximizar a la ventana ;)

Preparando la v3.0

kbaby
29-06-2008, 12:15:39
Si ingreso un usuario nulo, puedo entrar incluso sin pass.

Preparando la v3.0


No entiendo eso que me dices :eek: Si cuando le das a ingresar, lo que hace es comprobar que el Nombre, Apellidos y Contraseña coincidan con los items. Si es así se abre tu usuario :S.

Quítale la propiedad maximizar a la ventana ;)

Preparando la v3.0

¿Tiene esa propiedad? ¿Cuándo? ¿Cómo se que la tiene? Es que nunca vimos en el colegio esa propiedad :/

kbaby
29-06-2008, 12:33:28
Bueno, anoche y esta mañana he estado pensando y dándole vueltas al asunto. Como me venían muchas ideas, cojí un boli y papel y me puse a hacer un esquema de como quiero que quede la "V. 3.0" :cool:.

He pensado en lo que me dijo Fenareth... que le gustaría tener un historial para ver sus progresos (o no progresos jaja) en la dieta. Entonces pensé en la tabla que tengo. Podría hacer lo siguiente.

Cuando un usuario empieza desde 0 no tiene ningún IMC realizado. Entonces la tabla nueva sería:

Nombre | Apellidos | Usuario* | Fecha | IMC

Usuario*: He puesto en la V 3.0 usuario porque a la hora de ingresar, es molesto estar poniendo tantos datos... así que un usuario y contraseña y listo.

Cuando el usuario vayá a realizar su segundo cálculo del IMC... tendrá que ingresar la nueva fecha, su peso y su altura. Cuando le de a "Guardar IMC", este botón hará lo siguiente:

1º: Buscar en el ListBox el Usuario y Contraseña (que estarán consecutivos, aunque en la tabla no se muestra la contraseña).
2º: Quedará lo siguiente:

Nombre | Apellidos | Usuario' | Fecha-1 | IMC-1
Nombre' | Apellidos' | Usuario' | Fecha-2 | IMC-2

Osea, lo que va a hacer es volver a poner el nombre, los apelidos y el usuario de la persona. Seguido, pondrá la segunda fecha-2 que la obtendrá del edit en el que tiene que ponerla al hacer su IMC. Y El IMC-2 lo obtendrá del resultado obtenido.

¿Qué dificultades tengo?

Bueno yo creo que si me pongo puedo sacar todo... pero hay una cosa... para que cuando el usuario vuelva a abrir su sesión y le salga todo el historial... eso no se hacerlo. A ver, me explico mejor. El ListBox inicial era:

ListBox
-------
PEPE
LOPEZ LOPEZ
MANCHEGO
123456
18/05/2008
22
SARA
LOPEZ LOPEZ
COSMOPOLITA
121212
24/05/2008
26

Ese puede ser el ListBox inicial. Pero yo lo que quiero es que cuando PEPE se haga su segundo IMC el LISTBOX quede así:

ListBox
-------
PEPE
LOPEZ LOPEZ
MANCHEGO
123456
18/05/2008
22
PEPE
LOPEZ LOPEZ
MANCHEGO
123456
19/05/2008
21
SARA
LOPEZ LOPEZ
COSMOPOLITA
121212
24/05/2008
26

Lo que quiero es que se añada la información pero nunca al final. Creo que hay que hacer eso para que funcione. Aunque también si se agrega al final osea el ListBox quedaría:

ListBox
-------
PEPE
LOPEZ LOPEZ
MANCHEGO
123456
18/05/2008
22
SARA
LOPEZ LOPEZ
COSMOPOLITA
121212
24/05/2008
26
PEPE
LOPEZ LOPEZ
MANCHEGO
123456
19/05/2008
21

También puede encontrar a PEPE y poner en la tabla sus dos IMC ¿no?.



Pensando en Delphius... sobre el cifrado de contraseñas, pensé que para no complicarme... pues no mostraré en la celda la contraseña y así es más rapido :p

Me gustaría hacer una pregunta. La imagen de fondo es un elemento... ¿yo puedo hacer que cambie cuando el usuario inicie sesión? Osea, la Imagen1 se pondría Visible-False y la Imagen2 se pondría Visible-True.

Bueno xD Espero respuestas, voy a seguir en Delphi. :o

kbaby
29-06-2008, 12:56:46
Se me olvidó deciros. Me gustaría aprender como ponerle iconos a mis Button. Es que nunca me han enseñado nadie. Me gustaría ponerle iconitos :P

Haciendo el programa se me a venido otra duda...

Para que el usuario no tenga que estar ingresando la fecha con la que hace cada IMC... ¿el programa puede saber en que día estamos hoy? Yo vi que hay una utilidad que le pinchas y aparece un calendario blanco y azul. ¿De ahí delphi puede saber el día que es? Lo quiero para que se guarde en el ListBox y luego se vuelque en la tabla y así saber que día se hizo el IMC :P

eduarcol
29-06-2008, 15:19:27
Se me olvidó deciros. Me gustaría aprender como ponerle iconos a mis Button. Es que nunca me han enseñado nadie. Me gustaría ponerle iconitos :P


Debes utilizar el TBitBtn o el TSpeedButton, y en su propiedad Glyph ubicas la imagen


Haciendo el programa se me a venido otra duda...

Para que el usuario no tenga que estar ingresando la fecha con la que hace cada IMC... ¿el programa puede saber en que día estamos hoy? Yo vi que hay una utilidad que le pinchas y aparece un calendario blanco y azul. ¿De ahí delphi puede saber el día que es? Lo quiero para que se guarde en el ListBox y luego se vuelque en la tabla y así saber que día se hizo el IMC :P

Coloca un calendario de esos, supongamos que el name es calendario, colocas Calendario.Date := Date;

Delphius
29-06-2008, 16:04:32
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:


Mivariable := Now;


Saludos,

kbaby
29-06-2008, 17:43:47
Debes utilizar el TBitBtn o el TSpeedButton, y en su propiedad Glyph ubicas la imagen

Muchas gracias, uf esto me será muy util pues no quiero tener sólo el menu de mi programa, quiero unos botones grandes con iconos que se sepa para que es.

¿Dónde puedo encontrar fotos .bmp chicas para esto?
¿Puedo cojer un .ico que me guste, capturarlo con IMPR, PANT,PETSIS y guardar la imagen del icono en .bmp?

Coloca un calendario de esos, supongamos que el name es calendario, colocas Calendario.Date := Date;

Interesante lo voy a probar, aunque viendo lo que me dijo delphius:

A:= now

Resulta más cómodo ¿no?

¿Pero A que tipo de variable es? Yo la puse Real y cuando meto A en un edit me sale este valor: 39628,7796189583


PD: Sigo leyendo el post de Delphius que es dificil de entender a primeras.

enecumene
29-06-2008, 17:57:22
¿Pero A que tipo de variable es? Yo la puse Real y cuando meto A en un edit me sale este valor: 39628,7796189583


Hola, A es una variable tipo TDate ó TDateTime.


Saludos.

kbaby
29-06-2008, 18:21:14
Entonces para probar lo de la hora ¿con este código me valdría?


var a:tdate;
begin
a:=now;
edit1.text:=datetostr(a);
end


Es que no tengo el delphi al lado ahora mismo.

enecumene
29-06-2008, 18:24:33
var A:TTime;
begin
A:=Now;
edit1.text:=TimeToStr(A);
end;


Saludos.

kbaby
29-06-2008, 19:10:17
Una pregunta que no viene al tema:

¿Por qué sabeis tanto?
¿Es por el tiempo que habeis usado Delphi?
¿Por qué teneis una carrera?
¿La experiencia?


Gracias tio.

__________________________________

EDITO:

¿Sólo muestra la hora no? No puede mostrar la fecha?

kbaby
29-06-2008, 19:22:37
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 [-] (http://www.clubdelphi.com/foros/#)Mivariable := Now;


Saludos,

Me tiro para la 1º Alternativa. Es la que mejor me he enterado. Y lo de aprender base de datos... como dices, mejor mas adelante :p Voy a hacerlo (cuando sepa como conseguir la fecha xD).

Delphius
29-06-2008, 20:43:31
Una pregunta que no viene al tema:

¿Por qué sabeis tanto?
¿Es por el tiempo que habeis usado Delphi?
¿Por qué teneis una carrera?
¿La experiencia?


Gracias tio.

__________________________________

EDITO:

¿Sólo muestra la hora no? No puede mostrar la fecha?

Respondiendo, a tus preguntas yo diría que por amor al arte y el gusto por Delphi.

Aqui hay personas que no se dedican profesionalmente en el área de la informática, y aún asi tienen conocimientos sobre el tema. Esto lo han conseguido leyendo libros, consultando en los foros.

La experiencia también juega un papel importante, a medida que uno se ejercita, adquiere más destreza y habilidad en la resolución y desarrollo de sistemas. Se forma, se educa, se instruye.

Una de las cosas más importante es no perderle el miedo a pulsar F1. Allí dice mucho, pero no te dirá como aprender sobre programación. Esto se consigue con la práctica, y para ello sólo se necesita constancia (como todas las cosas de la vida).

No importa si es Delphi, o el lenguaje que sea... no es que nos sepamos los "trucos" y cada partecita de Delphi. La intención es asimilar los conceptos, las ideas y llevarlas a cabo en el lenguaje que te toque. Puede que en el dia de mañana te veas obligado a emplear Fox Pro, NET, Java, Cobol, VB... lo que se busca es aprender las nociones básicas de la programación, el uso de la lógica y un conjunto de buenas prácticas que te van a ayudar.

Si me preguntas cuanto se de Delphi, con gusto te digo que se menos del 50%. No tiene sentido aprenderse el lenguaje. Aqui lo usamos porque vemos en el producto una buena herramienta de calidad y porque ofrece ciertas ventajas que tal vez, otros compiladores/IDEs no poseen o lo poseen probremente.

A mi me encanta hacerte pensar Diego, y lo voy a seguir haciendo (admito que me gusta un poco ver sufrir al otro:D) Se que te cuesta, al comienzo todo cuesta. Pero más adelante, llegarás a darte cuenta de que ciertas cosas se te vuelven triviales.

Asi que si somos o no profesionales, aqui no nos importa... el que puede ayuda, y algunos nos arriesgamos a ayudar aun sin saber en profundidad sobre el tema.

Y no es que sepamos, es que conocemos. Posiblemente ya hemos pasado por ello, hicimos algo parecido, o recordamos haber visto por algun lado algo del tema.

Tu no te preocupes por ello, cada uno tiene su propio ritmo de aprendizaje.
Y por cierto, por ahora, que estas de "vacaciones" aprovecha para ir practicando... aunque yo te recomendaría que no descuides lo que viste en matemática, física, quimica. Durante el primer año de la carrera... no vas a tocar mucho a la PC ¡te van a asediar con análisis y/o calculo matemático, álgebra, física y química!

Con respecto al tema de la función Now: Now regresa el valor de tipo TDateTime. Es decir fecha y hora. Si sólo deseas la fecha, declara la variable de tipo TDate y guarda el valor:

var variable: TDate;
...
variable := Now;
ShowMessage(DateToStr(variable));

Para saber más sobre TDateTime, TDate y TTime... pulsa F1.

Saludos,

kbaby
29-06-2008, 21:00:32
Joe tio muchas gracias. Es que os hice esas preguntas un poco intimas porque a ver yo de Delphi sé -7% y me sentía muy acomplejado cuando alomejor os pregunto cosas que es como si mi hermana me viene y me dice:

- Diego, ¿cúanto es 2+9?.

Claro yo os pregunto, vosotros me respondeis ayudandome y me siento pues como se dice en españa una puñetera mi____ :p

Yo es que no se lo que me pasa pero nada que no me veo avanzar. LLevo menos de un año con Delphi y yo me imaginaba ya dominar el programa por estas fechas... pero nada creo que es un mundo por conocer.

Mis conocimientos, que son pocos pero le doy desde aquí las gracias a mi profesor de informatica Jose Luis Campos si me lee, me limitan hacer cosas. Uff son tantas cosas que siento... por algo que me gusta mucho, la programacion pero que me veo limitado aveces...

Bueno quien sabe, alomejor dentro de uno o dos años me veis (ojala) yo ayudando a la gente jajajaja.

Bueno ya entendi lo de la fecha así que voy a seguir haciéndolo.

PD: No tengo miedo por presionar F1 peeeeero... es que mi ingles es nulo. Lo unico que se es hello, bye. Yo aprendo francés y aleman... (aunque desearia saber frances). Y claro la guia delphi f1 no se lo explica bien como mi profe cibernetico :D

Delphius
29-06-2008, 21:18:56
Joe tio muchas gracias. Es que os hice esas preguntas un poco intimas porque a ver yo de Delphi sé -7% y me sentía muy acomplejado cuando alomejor os pregunto cosas que es como si mi hermana me viene y me dice:

- Diego, ¿cúanto es 2+9?.

Claro yo os pregunto, vosotros me respondeis ayudandome y me siento pues como se dice en españa una puñetera mi____ :p

Yo es que no se lo que me pasa pero nada que no me veo avanzar. LLevo menos de un año con Delphi y yo me imaginaba ya dominar el programa por estas fechas... pero nada creo que es un mundo por conocer.

Mis conocimientos, que son pocos pero le doy desde aquí las gracias a mi profesor de informatica Jose Luis Campos si me lee, me limitan hacer cosas. Uff son tantas cosas que siento... por algo que me gusta mucho, la programacion pero que me veo limitado aveces...

Bueno quien sabe, alomejor dentro de uno o dos años me veis (ojala) yo ayudando a la gente jajajaja.

Bueno ya entendi lo de la fecha así que voy a seguir haciéndolo.

PD: No tengo miedo por presionar F1 peeeeero... es que mi ingles es nulo. Lo unico que se es hello, bye. Yo aprendo francés y aleman... (aunque desearia saber frances). Y claro la guia delphi f1 no se lo explica bien como mi profe cibernetico :D

Por algo te digo, que todos tiene su ritmo. No debes sentirte apenado. La programación no es de un dia para el otro... ¡yo llevo entre 3 y 4 años, y aún me falta por aprender!

What!:eek: How he is that of which you do not know English!:eek: It is most important in our profession. I do not allow it to you. I am disappointed:o.

No mentira....:D No hay drama. Si es importante el inglés, yo tampoco se mucho. Por ahora, puedes ayudarte con diccionarios y traductores. Pero luego, más adelante cuando tengas más tiempo sería útil tomar un curso.

No se como será el programa de estudio donde vas a estudiar, en mi caso tuve que rendir una prueba de suficiencia de inglés, tuvimos clases y demás. Si no aprobaba el final... no podía optar por el título de pre-grado. Menos mal, que aún muy a pesar de que no tengo muy pulido el inglés, con algo me defiendo:p:D.

Saludos,

kbaby
29-06-2008, 21:23:56
What!:eek: How he is that of which you do not know English!:eek: It is most important in our profession. I do not allow it to you. I am disappointed:o.


Qué! ¿Cómo que tu no sabes ingles? Esto es lo más importante en nuestra profesion. No puedo permitirtelo a ti. Estoy ... estoy... desilusionado o decepcionado xD.

No se inglés pero he vivido en new york durante 1 año y medio con eso me defiendo yo. A la hora de ir a comprar el pan, de pedir algo en algun bar, comer...... :D

Bueno que sigo haciendo tu alternativa 1º :D llevo toda la tarde delante de delphi ahora voy a salir que he quedado con unos amigos. Y no te preocupes por mi inglés xD lo de hello y bye... umh... sé un poco más xD (Si es que hay mucho favoritismo para los ingleses... deberían sacar Delphi Espanish 7.0...). ¿Podríamos traducirlo? xD Jaja (para mentes como la mia de subnurmales) xD