elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Análisis del vídeo del hackeo al Sindicato de los Mossos de Esquadra


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 65
151  Programación / .NET / Re: Colorear marco de textbox o combobox en: 26 Junio 2017, 17:52
Lo que comenta Elektro es totalmente correcto, sin embargo también es complicarse en exceso para alguien que está empezando y no conoce a fondo el lenguaje.

Tú puedes tener una función (o varias sobrecargas, de hecho mejor así, una para textos otra para números, etc... siempre que resulte cómodo y simple) que validen tus datos, correcto... pero no le veo mucho sentido a ir modificando cada vez el campo que no pase la validación (luego deberás volverlo a su estado original).

Al caso, es más fácil tener un control oculto, con el formato ya 'hecho' (por ejemplo con un borde de otro color, un fondo de otro, color el texto resaltado en negrita... pero dicho control, lo que se hace simplemente es que cuando falle una validación se desplaza hasta la ubicación del campo que falla, y se hace del mismo tamaño que el campo que falla se escribe el mismo texto que contiene y acto seguido se le hace visible... y se le entrega el foco...

...et voilá, el usuario lo ve como tu quieres, sin tocar el original, ahora el usuario introduce el texto en ese control, y se intenta validar, se repite hasta que la cumpla o cancele la operación, si pasa la validación entrega el texto al campo original (que llamó la validación y sigue a la espera de la respuesta de su llamada) y se oculta....
Esto, es más sencillo, no requiere redibujar a cada instante, visualmente es equivalente, ya está todo hecho solo hay un Move y Size, y una asignación de texto... todo my simple.

En pseudocódigo sería más o menos así (3 bloques de código):

La lógica de validar todos los campos validables del formulario...
Código:
buleano TodoValidado = true
Por cada campo en camposValidables del formulario
     String Texto = Campo.Texto
    
     Si Validar(Campo, Texto) = TRUE luego
        Campo.texto = texto
     Si no
        TodoValidado = FALSE
        Salir del bucle // fue cancelado...
     Fin si
Fin por cada

Si TodoValidado = TRUE
   // Siguiente paso, que debas hacer en este caso
Si no
   // lo que debas hacer si se canceló.
Fin si

Esta función recoge la lógica de validar expresada más arriba.
Esta función debería tener sobrecargas si hay que validar diferentes cosas aparte de texto o con criterios dispares...
Código:
Buleano = Funcion Validar(control Ctl, String Texto)
    CtlOculto.MoveAndSize(ctl.Left, ctl.Top, ctl.Width, ctl.Height)
    
    //primero se valida el texto original, solo si falla aparecerá el trabajo del control oculto.
    Mientras ValidarP(Texto) = FALSE
        Mensaje de error: "el texto introducido no es válido, corrijalo y luego pulse intro (validar) o   ESC (cancelar)
        CtlOculto.Texto = Texto
        Ctl.Visible = TRUE
        Ctl.SetFocoModal // se da oportunidad al usuario de cambiar el texto y al pulsar intro o Escape  regresa aqui (= MODAL, el código queda a la espera hasta que se cierre el objeto llamado, básicamente podría ser un formulario, si no es modal el código continuará tras la llamada previa y eso no interesa)
            
        // Si se pulsó intro, se debió cerrar el ctlOculto y volver a ser validado su texto.
        Si Tecla = Escape luego
            ctlOculto.Visible = FALSE  //Si el ctlOculto es formulario o está dentro de un formulario, esto no sería necesario, se habrá cerrado el formulario Modal...
            Devolver FALSE // se sale de la función desde aquí
        Fin si
    Repetir
    Texto = ctlOculto.Texto
    ctlOculto.Visible = FALSE //Si el ctlOculto es formulario o está dentro de un formulario, esto no sería necesario, se habrá cerrado el formulario Modal...
    Devolver TRUE
Fin Funcion

El código que hace realmente la validación iría aquí:
Código:
Buleano = ValidarT(Texto) //T de Texto...
    // validación del texto, lo que tu hagas para validarlo
    // Devuelve TRUE si es válido y FALSE si no lo es
Fin Funcion

Y más o menos esto te simplifica mucho tu tarea... el control ctlOculto, ya está con el formato de 'error' así no hay ni que redibujar cada control ni luego volverlo a redibujar de nuevo a su estado original.

p.d.: Yendo un poco más lejos, ni siquiera tienes que reposicionar y redimensionar el control oculto, basta montarlo en un fomrulario nuevo , como te convenga y mostrarlo igual que se haría con un "MessageBox" (de hecho sería eso, un messagebox personalizado) y mostrarlo centrado en la pantalla y más grande si es preciso, ahora con dos botones explíctos OK y Cancelar, pero además puedes añadir una etiqueta indicando que falló o que se espera que se escriba en dicho campo.
Las modificaciones al pseudocódigo para esto son evidentes, así que no veo preciso añadir nada más... para adaptarlo mas concretamente.
152  Foros Generales / Noticias / Re: ¿Es posible jugar en un iMac 2017 tope de gama? en: 25 Junio 2017, 16:24
Este tipo de artículos, son siempre el tipo de tontería: "Juan construyó una pila partiendo de una patata, un trozo de clabe y un limón", como si fuera algo notorio, o una proeza imposible.... cuando en realidad nace más como un fruto del aburrimiento.

Casi todo vale para más cosas que aquellas para los que las fabricaron pensaron... luego son artículos de paja, no suele haber nunca nada excepcional que merezca la pena de perder el tiempo siquiera en leerlo.
153  Foros Generales / Noticias / Re: Anonymous: la NASA está a punto de anunciar el descubrimiento de vida en: 25 Junio 2017, 16:09
Por qué tonterías????. Sólo por que tú no crees que exista vida fuera de este planeta???.

Me pregunto que hará toda esa gente que jura a ultranza que no existe vida inteligente, ni extraterrestres, ni OVNIs (naves extraterrestres, nada de objetos voladores no identificados, que al final puede ser cualquier cosa), el día que aterrice una nave y veamos descender seres vivos, inteligentes de una especie similar o muy distinta, o peor que como en Mars Attack, directamente conoces su presencia a partir de unos 'ataques'...

Tan difícil es aceptar para algunos... modifico la pregunta, tan tonta teneis la cabeza que no os entra en vuestra inteligencia más posibilidad que el geocentrismo?. el geocentrismo, no solo defendía la Tierra como el centro del universo, también al Hombre como el centro de la creación, y es llamativo que todos los que no creen en ninguna religión, en cambio sigan postulados en ese geocentrismo de espécimen...

¿Tan en baja estima teneis a todas las antiguas civilizaciones que todas sin excepción, tienen en sus tradiciones "seres superiores venidos del cielo", tan mentirosos o pardillos y crédulos creeis que eran?????. Pués yo digo que hoy día, no somos ni un ápice más INTELIGENTES que ellos (es más hay sobradas pruebas que demuestran que hoy día hay más tontos que probablemente en cualquier otra época, básicamente porque hoy ya no se es dependiente de la inteligencia para 'sobrevivir'), otra cosa es la tecnología... el avance tecnologico y la más que discutible EVOLUCIÓN, son dos cosas distintas que no van de la mano en (yo diría que en ningún) periodo histórico, uno puede avanzar mucho en poco tiempo y otro estar detenido (si es que existe), miles o decenas de miles de años...

¿Quién puede dudar d ela inteligencia de los griegos, los egipcios o los mayas?. Nadie cuerdo... Ah... pero si hablamos de la historia que ellos cuentan de sus ancestros que se remontan a muchos miles de años antes que ellos, entonces los llamamos mitos, y directamente tontos. ...pero entonces, ¿todas las civilizaciones del planeta, eran tontos?. Porque vayas adonde vayas las culturas arcaicas que allí habitaban el lugar, todas sin excepción, tenían historias similares y todas también sin excepción construyeron grandes estructuras para honrar o hacerse merecedores de aquellos seres a los que sus ancestros vieron, tocaron, aprendieron, convivieron, amaron...y quizás hasta con los que se reproducieron...

...pero bueno, el que quiera seguir su senda de ignorancia creyéndose superior a los antiguos, libre es de hacerlo, faltaría más... el libro de los tontos, es realmente más grande que el libro de los sabios y cada cual decide a qué libro apuntarse, es una lástima cuantos se apuntan al libro equivocado, creyendo que su inteligencia lo sabe todo, que su raciocinio es infalible y que no existe nada más allá de los que suss ojos pueden ver y por supuesto despreciar por completo lo que su mente pueda sugerir... a cuantos les guataría extirpar la imaginación a la humanidad, para convertirlos en auténticos robots, antes decíamos becerros... (un robot hace lo que le han programado, un becerro sigue a otro becerro que va delante, así que, cuál más idiota, el robot o el becerro).
154  Foros Generales / Noticias / Re: Los grupos de WhatsApp aceptarán más participantes en: 25 Junio 2017, 15:34
Qué duda cabe que el sistema va a ser completamente inútil.

Un chat jamás podrá competir con un foro... el problema d elos mensajes instanrtáneos cuando hay muchos usuarios, es que el númeor de mensajes puede llegar a ser dexorbitante, y luego resulta ridículo pretender leer 385 mensajes al día siguiente y mucho menos pretender responder a todos.

La organización de un chat es diferente, porque cada cual está suscrito por así decirlo a diferentes foros.. si hay 10 foros pués solo hay 10 actualizaciones, cada vez indicando el último tema escrito en ese foro, así tenga 850 mensajes nuevos un foro dado, a ti te basta saber que si no es el que sigues, puedes pasar completamente de él...

Ya un chat con una docena de personas es algo incómodo de manejar, no me imagino un chat de empresa con 80 tipos comentando unos tonterías, otros cosas de trabajo y otros tratando de caer en gracia al jefe. y todo eso sin parar a pensar para nada en la seguridad y privacidad de la empresa... y sin contar que habrá empresas que por contrato tendrán prohibido usar programas ajenos a los permitidos en la empresa mientras se está en horario laboral y dentro de las oficinas d ela empresa. Y la seguridad y privacidad de una empresa, si siempre fue importante, hoy día es ya una cuestión vital...
155  Foros Generales / Foro Libre / Re: Como llevarnos todo lo aprendido? en: 25 Junio 2017, 15:25
:¬¬ claro... y quien no crea en la muerte, no se atreva a discutir esos temas...
No. técnicamente es más simple, si alguien no cree, no le gusta algo, que no vaya a J0D3R.

A mi no me gusta la música flamenca, ni el rap... y lo que no hago es ir a un concierto, para luego estar todo el rato quejándome de todo... el que  está ahí, va a disfrutarlo y no necesita para nada que haya gente que vaya a fastidiarles su experiencia... no es tan difícil de entender creo yo. Si un tema me la repanpinfla y no me interesa nada, o no creo en ello, a lo sumo leo, y paso a otro tema, discutir por discutir, no tiene sentido...
156  Foros Generales / Foro Libre / Re: Como llevarnos todo lo aprendido? en: 25 Junio 2017, 04:11
Francamente, quien no cree en la vida más allá de esta vida, no pinta demasiado tratando con estos temas. Es como alguien que no quiere salir de casa pero sin embargo, recorre el camino con todos.

A pesar de todo y de todos, la muerte es sólo un portal a otra parte. Sin morir aquí, no podemos nacer en otra parte. Y lo que es de aquí, se queda aquí... más el conocimiento, ese pertenece al alma, luego la acompaña en su camino. El cuerpo es como los zapatos, sirven para hacer este camino, pero no es de utilidad para el isguiente, la forma, el volumen aquí son necesarios, en el siguiente camino, no.

No solo te llevas tus conocimientos (aunque la mayoría inútiles), también tus sensaciones y sentimientos, por eso nunca hace mal quien construye todas las partes sin descuidar ninguna.

...y quien no crea, tampoco tiene motivos para obrar en su contra o en contra de los demás, al menos para ser socialmente razonable uno debe intentar seguir un camino correcto (más que recto)...
157  Programación / .NET / Re: Ejercicio de invertir un numero en vb.net (algo incomprendido) en: 23 Junio 2017, 01:48
El modo más fácil y rápido de invertir una cadena de texto, es acceder a sus bytes individuales y operar sobre ellos... Toma rel primero e intercambialro por el último, luego el segundo por el penúltimo, etc... hasta que se encuentren en el centro.

Ahora bien, cuando tienes un número, cada byte no retiene un carácter del número, si no que es un 'trozo' de la base numérica en sí misma (decimal al caso), por lo que se hace preciso convertirlo a cadena de texto (una base numérica de base 256, donde los números tienen una posición concreta dentro de dicha base), sólo entonces la inversión puede aplicarse adecuadamente operando con los bytes...

Más o menos como los tienes (y digo más o menos, porque al tiempo que inviertes, vas generando el número, es más óptimo, convertirlo entero a cadena, luego invertirlo y luego convertirlo a número (si es preciso que deba devolverse un número)),  sin embargo, en tu código hay dos errores de lógica...

...
        Do
            WriteLine("INGRESE UN NUMERO")
            num = ReadLine()
            Do
                y = y * 10 + (num Mod 10)
                num = num \ 10
            Loop While num > 0
            WriteLine(y)
            WriteLine()
            y = 0

        Loop While y = 0

...
Marcado en negrita...
- Tu bucle interno, debería tener el 'while' tras el 'do', ya que si la entrada es 0, todavía entrará en el bucle una vez, siendo innecesario (sin entrar a valorar el código interno).
- Tu bucle externo, es un bucle sin fin... porque le dices (marcado en negrita):
 Y = 0 y luego: Repetir mientras Y=0, como acabas de asignarle el valor 0, jamás saldrá del bucle, porque jamás dejará de cumplir esa condición.
158  Programación / Programación General / Re: Problemas con eliminar en pilas en: 22 Junio 2017, 22:19
Cuando usas una pila programada por otro, sólo tienes disponible (habitualmente) los métodos Push y Pop... Entonces el unico modo de eliminar un elemento es llegar hasta él.

Operando con los datos que dices tener:
Código:
a.Push(1)
a.Push(2)
a.Push(3)
a.Push(4)
a.Push(5)
Ahora necesitas eliminar el elemento 3, que además tiene ese mismo valor (sin consideraciones de elemento 0, por simpliificar)...

1º - Se pasan a otra pila los que estén encima:
Código:
b.push (a.pop) //5
b.Push(a-Pop) //4

2º - Se extrae el elemento que queríamos (hemos excavado hasta llegar a él, ahora está en la superficie, el pico ahora golpea en él)
Código:
a.Pop //3

3º Meter de nuevo los que estaban encima:
Código:
a.Push(b.Pop)  //4
a.Push(b.pop) //5

Ahora bien, cuando la pila la diseña uno mismo, ya provee un método interno para agilizar esto... La solución depende en realidad de la estructura usada para realizar la pila...
Supongamos que fuera un array que es algo simple.

Código:
(privada) Funcion Delete(entero index)
    Recorrer desde index hasta ItemsEnPila-1
        Array(index) = Array(index +1)
    Siguiente
    ItemsEnPila -=1
    // Ojo, no se verifica en este ejemplo si index está en el rango... queda a tu esfuerzo.
Fin Funcion
Como ves todo lo que hemos hecho es bajar una posición todos los que tiene encima. ni siquera necesitamos borrar el último elemento, toda vez que Pop, sacará el último disponible y un Push sobrescribiría ese último valor.

Fijate que en una pila incluso eliminar x elemento del final o vacíar la pila, se limita a ajusta el valor de la propiedad ItemsEnPila, para vaciarla se pone a 0 y listo...
159  Foros Generales / Noticias / Re: La Policía Nacional lanza una nueva operación contra miembros de la SGAE en: 21 Junio 2017, 00:19
A estas alturas, a quién le queda dudas que la SGAE, es un nido de ratas...?
160  Foros Generales / Noticias / Re: Estados Unidos podría obligar a visitantes a declarar sus bitcoins en: 21 Junio 2017, 00:17
jajajaj... que bueno...

es como si me obligan a declarar los sueños que tuve anoche, una payasada...
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 65
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines