Una Compilación Que Hice Ahora
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. |
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, |
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. |
¿Qué es el IMC?
// Saludos |
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. |
No esta mal :D
Me salio 20,42 mi IMC xD. Por cierto, te recomiendo que en los TEdits pongas las propiedad PasswordChar:=*. Salu2 |
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! |
Y que tal, si solo limpias las casillas cuando te equivocas de usuario en vez de desaparecerlas...?.
Una idea :) |
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. |
Cita:
Necesito esconder en la Celda que sale la contraseña... la contraseña, osea, que solo salga ******* xD Gracias! ¿Como se ace? |
|
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. |
Cita:
|
Usa la propiedad TabOrder
|
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:
|
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: ;) |
Cita:
IMC: PESO/(ALTURA)^2 El ordenador no ze ekivoca :P |
Cita:
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 |
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. |
Cita:
// Saludos |
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 |
Jajaja :P Bueno aqui sigo esperando por si alguno sabeis ponerle encriptacion a una celda o columna en concreto. Gracias.
|
vamos, esperando la v2.0 ;)
|
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.
|
Cita:
|
Cita:
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 :) |
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, |
Cita:
|
Cita:
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 |
Cita:
|
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. |
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, |
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 ; ... |
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, |
Si ingreso un usuario nulo, puedo entrar incluso sin pass. Quítale la propiedad maximizar a la ventana ;)
Preparando la v3.0 |
Cita:
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. Cita:
|
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 |
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 |
Cita:
Cita:
|
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:
Saludos, |
La franja horaria es GMT +2. Ahora son las 17:20:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi