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


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 127
21  Programación / .NET / Re: Ayuda excepcion c# en: 17 Abril 2018, 15:22
Creo  que nuestro amigo, el problema que tiene es que no enrtiende que son los parámetros, para qué sirven... para eso, nada mejor que patear el lenguaje y a los puristas.

Veamos...
Jeezy, supongamos que tienes una casa, tienes una mesa pero le faltan las sillas, encuentra un carpintero (librería), que construye sillas (función), entonces tu quieres encargarle algunas sillas para tu mesa (invocar la función). El carpintero está muy ocupado, así que te deja un papel para que tú lo rellenes... ea, ese formulario sería como una función llamada "ConstruirSilla(...)", y te reclama que rellenes estos datos:
- Numero de sillas: Cuantas sillas quieres que te fabrique?
- Numero de patas: cuantas patas deben tener las sillas?
- Color de la pintura: Qué color de pintura deben llevar las sillas (usa0 si no quieres que las pinte)?
- Alto del asiento: A qué altura está situado con exactitud el asiento de la silla?
- Lleva un respaldo: Las sillas deben llevar asiento, o son más tipo taburete?
- Lleva cojín: han de llevar cojín las sillas...?
- Estilo: El estilo de la silla, a elegir entre una cantidad enumerada a la derecha, que se acompaña de foto.

Bien, pués cada una de esas cosas que te reclama se llaman parámetros (podrían ir más, pero el carpintero no quiere dar tanta libertad, que lo vuelva loco, o bien que luego resulte que le falte materiales para tus elecciones, o bien que le supongan caro contentar al cliente con otras elecciones), y son precisos para cumplir la funcionalidad, ya que de sus valores va a depender el resultado...
Ahora traduzcamos esa funcionalidad que el carpintero te ha presentado en un papel, para contratar la fabricación de unas sillas:

Código:
Funcion ConstruirSilla(entero NumSillas, byte NumPatas, entero Color, byte AlturaAsiento, buleano ConRespaldo, buleano ConCojin, enumeracion Estilos Estilo=EstiloDefecto)
... código para fabricar las sillas (dentro de la función)...
.... quizás como respuesta dé el precio de las sillas...
     devolver (PrecioUnitario * NumSillas)
Fin funcion

Ahora cuando 'llamemos a esa función', debemos indicar un valor VALIDO (dentro del rango admitido), para cada uno de esos parámetros obligatorios, porque es lo que nos pide el carpintero.
Supongamos que queremos 6 sillas, para nuestra mesa, y como es 'normal' la queremos de 4 patas, la mesa es de color 'miel', luego parece razonable que la queramos también en el mismo color (típicamente tendrá una tabla donde elegir el color, e indicar un número como referencia de ese color (o un string "miel", "blanco"...) supongamos que ese color es el 75247, luego queremos que lleve Respaldo, pero no necesitamos que tengan cojin, y el estilo de la silla, igualmente dispone de una tabla el que prefiramos y colocamos el número asociado a dicho estilo, imaginemos que es el 22.
Entonces ahora podemos invocar la función:

Código:
entero color = 75247
buleano cojin = FALSE
estilos e = 22
Preciototal = ConstruirSilla(6, 4, color, TRUE, cojin, e)

Como ves, hemos rellenado cada parámetro con el valor que hemos elegido, quizás si marcas en numPatas= 45, responda con un error, y diga que el númeor de patas admitida sea entre 1 (tipo taburete con un solo pie) y 6 (para sillas muy excéntricas), luego 45 se sale de lo que fabrica... el carpintero en persona al leer ese valor te llamaría por teléfono, para aclararte el tema.
Algunos parámetros los hemos rellenado con 'valor inmediato', otros en cambio hemos creado una variable del mismo tipo que es el parámetro, le hemos asignado un valor y la hemos entregado en el lugar donde se nos pide el parámetro. Es lo mismo entregar dinero en mano (valor inmediato), que entregar un cheque que supone el dinero (variable).

...y bueno, debería quedarte claro...sino, entonces es mejor que leas más, mucho más antes de ponerte a escribir código que no sabes interpretar.
22  Programación / .NET / Re: Programas de broma en: 17 Abril 2018, 14:57
Un programa es malicioso, desde el mismo momento en que hace algo que el usuario no ha aprobado...

...es malicioso, además, porque cuando empiece a hacer esas cosas, el usuario puede pensar que está infectado con un virus y debido a ello, puede entrarle prisas por formatear, o intentar cualquier tontería, lo que como mínimo hace malfastar su tiempo y en lo peor, puede perter el contenido completo del disco duro, si no tiene conocimientos suficientes...
23  Foros Generales / Noticias / Re: Francia ha creado su propio servicio de mensajería cifrada por miedo al ... en: 17 Abril 2018, 05:31
Al fin, alguien en un gobienro, con dos dedos de frente...
24  Foros Generales / Noticias / Re: La televisión del futuro sabrá lo que ves y te mostrará anuncios personalizados en: 17 Abril 2018, 05:27
No sé los demás, pero yo, lo tengo bastante claro...

Cuando la tv. venga por defecto conectada a la red y no exista la posibilidad de desactivarlo, se habrá convertido en un espía en casa, un intruso, un ladrón... ...por tanto llegará la hora de la muerte de la tv. (por lo menos en mi casa).
25  Foros Generales / Noticias / Re: La Policía ante el rompecabezas de los delitos con bitcoin: "No estamos .... en: 17 Abril 2018, 05:12
Y como evitar que el crimen organizado y los delincuentes comunes hagan uso de tan conveniente medio de intercambio???...
La teoría es fácil: Haciendo que el bitcoin se desplome... y no valga más que un grano de arena.
26  Programación / Java / Re: ¿Cuales son los tipos de algoritmos o metodos mejores en: 16 Abril 2018, 21:03
Pués para estar en un concurso (se supone que) se necesitan ciertos conocimientos y claridad de ideas... sin embargo, a duras penas eres capaz de explicarte, así que no se yo si saldrás bien parado...

...al hablar de algoritmos y sin más detalles específicos, asumo que te refieres a algoritmos de ordenamiento, wikipedia para eso te viene muy bien... debajo busco luego un enlace a todos ellos...

- El de burbuja descártalo, salvo que que estés muy limitado de tiempo o tengas que ordenar pocos ítems (a lo sumo algunos centenares), gNome también encaja ahí.
- Entre esa cantidad y pocos cientos, selección e inserción son más eficaces, y todavía son relativamente fácil implementarlos de cabeza en poco tiempo (sin cometer errores), pero en ese caso,
- Cuando te aproximas al medio millar, quicksort destaca sobre el resto y se hace más notable cuanto más órdenes de cifras haya. Combo sort, es entre la mitad y 1/4 de rápido con respecto a quicksort...
- Si son pocos miles, y los límites (el mayor y el menor) no distan varios órdenes de cifras, ordenas números y son todos enteros, el algoritmo counting sort es el más rápido, pero consume de memoria un array adicional, de tamaño 'menor hasta el mayor'. Es el más rápido de todos, pero solo puede usarse en situaciones limitadas.

Naturalmente, son todo aproximaciones, depende de la implementación, del lenguaje con que se programe y del hardware...
https://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
27  Programación / .NET / Re: aplicar atributos a archivos y carpetas. en: 16 Abril 2018, 04:42
Cuando no se conoce a prori, lo que ha de hacer una tarea determinada (tarea determinada, con cantidad detrabajo indeterminado), una barra de progreso resulta inútil... si no sabes de antemano si hay 100 ficheros, o 100.000 como vas a indicar el porcentaje total que llevas en un momento dado???.

Cuando es incierto lo que haya de tardar, porque se desconoce el tamaño (y precalcularlo, supone una pérdida de tiempo, que alarga el tiempo de proceso), entonces lo deseables es mostrar solo un indicador de "Trabajando"... esto es, ...una pequeña animación, y para que el usuario no acabe por creer que se ha colgado la aplicación, con cada carpeta, la señalas en un label y como habrá carpetas con muchos ficheros, cada segundo (por ejemplo) actualizas la ruta el nombre del fichero actual en otro label...
28  Programación / Programación C/C++ / Re: Consulta sobre programa C en: 15 Abril 2018, 03:13
Cuando usas más de 3-4 if..elseif seguidos, debes pensar en una solución algo más 'elegante', que a la par de ganar en claridad, es más fácil de mantener...

0 - De entrada usando un Switch, sería más claro.
1 - Pero mejor aún si usas unos arrays, en uno guardas los 'periodos', y en otro los pintores...
2 - En realidad sería mejor usar una estructura...

...pero vamos con arrays y en un futuro lo mejoras con alguna estructura...
Código:
Funcion Main
  Array de strings periodos(0 a x-1)
    periodos(0) = "Prehistorico"
    periodos(1) = "Egipcio"
    periodos(2) = "Renacimiento"
    periodos(3) = "Barroco"
    ... etc...

  Array de Strings pintores(0 a y-1)
    pintores(0) = "Leonardo"
    pintores(1) = "Michelangelo"
    ... etc...
    pintores(7) = "Bellini"
    pintores(8) = "Velázquez"
    pintores(9) = "Murillo"
    pintores(10) = "Caravaggio"
    ... etc...
 
  array de strings PintoresPeriodo(0 a x-1)  //relaciona los pintores con cada periodo
    pintoresPeriodo(0) = "-1,1"   // no contiene pintores, y la galeria es la 1.
    pintoresPeriodo(1) = "-1,1"  // no contiene pintores, la galeria es la 1.
    pintoresPeriodo(2) = "0,1,2,3,4,5,6,7" // Leonardo, Michelangelo... y Bellini pertencen al periodo 2
    pintoresPeriodo(3) = "8,9,10" // Velázquez, Murillo y Caravaggio, pertencen al periodo 3
    ... etc...

  Array de enteros galerias(0 a y-1)  // relaciona a cada pintor con una galeria.
    galerias(0) = 2   // Leonardo está en la galeria 2.
    galerias(1) = 2   // Michelangelo también está en la galeria 2.
    galerias(2) = 3   // Rafael está en la galeria 3.
    ... etc...

    galerias(7) = 6   // Bellini en la galería 6 (equivalente a la 5b, guardamos números en este array, pero se puede cambiar a array de strings, si es preciso poner 5b...
    galerias(8) = 7   // Velázquez en galeria 7
    galerias(9) = 7  // Murillo        "    "
    galerias(10) = 8  // Caravaggio, en la galeria 8
    ... ec...

   Llamada MostrarOpcionesAlUsuario
Fin funcion

Ahora la función que realiza todo el trabajo... muestra opciones, deja elegir al usuario, verifica valor correcto y muestra resultados.
Código:
Funcion MostrarOpcionesAlUsuario
     String repite
     entero prd, pnt, gal  // periodo, pintor
     buleano b

    Hacer
        Hacer
            Llamada imprimirPeriodos
            prd = PedirPeriodo("Elige un periodo... (teclea el número asociado al periodo)")
        Repetir mientras ((prd < 0) o (prd >= x))
        imprimir "Periodo elegido: " + periodos(prd)       
     
        Hacer
            b = llamada ImprimirPintores(prd)
            Si (b = TRUE)
                pnt = PedirPintor("Elige un pintor... (teclea el número asociado al pintor)")
                mostrarAlUsuario("...para el pintor " + pintores(pnt) + " del periodo " + periodos(prd)  + " La galería correspondiente es: " + galerias(pnt)
            sino
                pnt = 0 // para periodos sin pintores, ya se mostró la galería, no precisa un valor elegido.
            fin si
        Repetir mientras ((pnt < 0) o (pnt >= y))

        repite = PedirAlUsuario("¿ Desea elegir otra vez (S/N) ?")
    Repetir mientras repite = "s" o repite ="S"
Fin funcion


Borra la pantalla y muestra opción de elgir un periódo:
  Prehistórico    = 0
  Egipcio           = 1
  Renacimiento  = 2
  Barroco          = 3
  ...
Código:
Funcion imprimirPeriodos
    entero k
   
    Borrar pantalla
    bucle para k desde 0 hasta x-1
        imprimir periodos(k) + tabulador + " = " + (k)
    siguiente en bucle
fin funcion

Imprime la lista de pintores asociada al periodo elegido (que se recibe como parametro).
y devuelve un buleano. Si devuelve TRUE, indica que debe localizarse la galería asociada al pintor que se elija.
  Periodo elegido: Renacimiento
  Elige un pintor... (teclea el número asociado al pintor)
      Leonardo      = 0
      Michelangelo = 1
      ...
      Bellini           = 7
Código:
buleano = funcion ImprimirPintores(entero periodo)
    entero k, z
    array de enteros n()

    n = TomarCadaNumeroSeparadoPorUnaComaDe(pintoresPeriodo(periodo)
    z = ultimoIndiceEnArray(n)

    Si (n(0) =>0)
        Hacer
            imprimir tabulador + pintores(n(k)) + tabulador +  " = " + n(k)
            k +=1
        Repetir mientras (k<=z)
        Devolver TRUE
    Sino
        imprimir "el periodo " + periodos(periodo) + " no tiene pintores conocidos, la galeria es: " + galerias(n(1))
        devolver FALSE
    Fin si
fin funcion

Como puedes ver, lo hemos resuelto sin un mísero if...elseif... gana en claridad, y si la lista crece o cambia, basta modificar en main, los valores de 'x', 'y' y reasignar en sus respectivos arrays...
29  Programación / Programación Visual Basic / Re: Mover al siguiente elemento igual en un listbox en: 14 Abril 2018, 21:03
No.

Listview es mucho más complejo... de entrada sus elementos permanecen en la colección ListItems, luego la cantidad listcount, no es una propiedad al mismo nivel jerárquico... de hecho ni siquiera es una propiedad en listview:
Listbox1.Listcount
Listview1.ListItems.Count
...
Listbox.AddItem ("texto")
Listview1.ListItems.Add (,, "texto")

Hay que adaptarlo y para ello debes conocer en cierta profundidad el control. Si no lo conoces no tiene sentido usarlo, no es conforme usar cosas sin saber que se hace, jugando a 'rpobar a ver que pasa'...

USA la AYUDA, es muy completa, allí se describe a fondo cada control incluyendo el listview, tienes acceso a sus propiedades, métodos, eventos y con ejemplos de cada uno...
30  Foros Generales / Noticias / Re: ForoCoches: vida, milagros y sombras del 'bar de internet' con un millón de .... en: 14 Abril 2018, 20:19
Opino lo mismo que Elektro.

Solo añado, que el nombre del foro debiera ser más acorde con la realidad y cambiarlo a: ForoTrolls
...que lo reconozcan sin tapujos, son trolls...
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 127
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines