Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Serapis

#2421
Programación C/C++ / Re: Ayuda Calculadora
2 Junio 2018, 03:54 AM
.... quedó duplicado, al tratar de modificarlo.
#2422
La inútil forma de intentar explicar algo a los no entendidos, parte casi siempre de introducir otros 25 términos que también desconocen (solo por hacer prevalecer la rigurosidad y/o exactitud en los términos por delante alverdadero objetivo que se supone que es el de 'enseñar').

De ahí que el íntento, no pase de eso, intento.

Mientras uno tema patear el lenguaje cuando se precise (sea de la jerga que sea), no será capaz de instruir a nadie que no esté ya previamente instruído.
#2423
Da pereza responder, porque para hacerlo exige leer y empaparse todo el código.... y esto no resulta conveniente.

Tu dices que quieres "filtrar por departamentos", pero como nosotros no estamos en tu cabeza y no vemos la necesidad ni urgencia de tragarnos 900 líneas de código, no nos vamos a molestar en ver qué es un departamento, etc, etc...

Haz una somera explicación en uno o dos párrafos de tu proyecto, de qué trata, que es un departamento y a que llamas fitrar en ese proyecto... 2 párrafos puede leer y entender (si no está muy enrevesado) todo el mundo, y con eso se puede ir más certero al código y ver el punto concreto donde algo deba ser cambiado, remplazado, eliminado, añadido... pero ser exigible leer antes que nada 900 línea de código, para poder responder, es algo que solo hará quien de repente esté aburrido y le apetezca... acaso ninguno.
#2424
Claro, Mafus... yo entendí en primer lugar lo mismo...

...al final me quedó claro, que su problema era que no entendía el funcionamiento, de la función, que de alguna manera ve la función como una instrucción atómica de un único paso.
#2425
Bueno, olvidas lo más importante y es que dices que quieres escribir en más de un formulario (que se ve que contienen controles textbox del mismo nombre?)...

No voy a entrar demasiado en señalar en que no es la forma más óptima... creo que si varios textbox aparecen por igual en varios formularios, podrías crear un contenedor (control de usuario), que puedas poner a cada uno de los formularios. Esto haría innecesario recorrer la colección de controles de cada formulario, ese contenedor ya tendría esos controles...

...bueno, a lo que veníamos...
Cada formulario que lo precise, declara una coleccion, de nombre idéntico (por ejemplo txtBoxes as collection) en cada formulario...
Luego (desde donde se vaya a usar), creas una colección y metes en ella cada formulario que interese (esos que contiene copia de dichos textbox y que deben ser actualizados).
La llamada a la función (seguramente desde un botón) sería mñás o menos así...

dim colFrm = nueva coleccion
with colFrm
        'si form1.txtBoxes.count>0) then
        ' esto no debe ser necesario si en efecto como dices todos tienen textbox del mismo nombre...
            .Add(form1)
        'end if
        .Add(form7)
        .Add(frmCuentas)
        .Add(form12)
        .Add(me) ' siendo el caso que este botón esté en este formulario...
  end with

  call ActualizarEstosForms(colFrm, query, conex, ...)
  ' activar-mostrar el form que prefieras, por ejemplo
  colFrm.Item(0).show ' .BringToFront .Activate, .Visible=True . enable=true etc... según sea el caso estén cargados o no, visibles o no, etc...



Esto es rentable, porque la búsqueda de dichos controles solo debería hacerse una vez cuando se carga el proyecto (y si no hay cambios dinámicos de controles textbox, claro), y no cada vez que se requiera cargar datos desde la BD.

private sub Main
    LlenarColTextboxFromformx(form1)
    LlenarColTextboxFromformx(form7)
    LlenarColTextboxFromformx(frmCuentas)
    LlenarColTextboxFromformx(form12)
    LlenarColTextboxFromformx(frmPrincipal)
end sub



declara en diseño en cada formulario una coleccion txtBoxes...

funcion LlenarColTextboxFromformx( byref f as form)  as short
     por cada ctrl in f.ControlCollection
         si ctrl.getType.name = "TextBox" luego  ' otra forma de preguntar...
             f.txtBoxes.add(ctrl)
         end if
     siguiente

     devolver f.txtBoxes.Count
fin funcion



Luego creas una función que reciba como parámetro esa colección de  formularios...
que se recorre y de los cuales se van tomando sus textbox...

funcion ActualizarEstosForms( colF as coleccion, ....)   
    dim f as form
    dim tb as textbox
    dim txt as string

    try
        consulta a la BD 

        por cada f en colF
            por cada tb en subf.txtBoxes
                try
                    txt = Getstring(....)
                    tb.Text = txt
                 catch
                     messagebox.show "Nombre del textbox no hallado, corrige el nombre" ' el error más probable, para el caso...
                 end try
            siguiente
        siguiente
    catch ex as exception
        mesagebox.show (ex.message) ' algún problema con la base de datos...
    finally
    end try
fin funcion



#2426
Claro.
Es cosa del diseño, directamente no se puede imprimir toda la cadena al revés, porque no está implementada dicha función de forma nativa.

Un string se compone de muchos caracteres. Luego cuando se manda imprimir, (a bajo nivel) se imprime de uno en uno. Cualquier función que imprime una cadena en cualquier lenguaje siempre usa un bucle, imprimiendo uno a uno los caracteres...

Qué problema tienes en recorrer el bucle desde el final al principio, imprimiendo cada vez un carácter...?.

Crea una funcion, que haga lo mismo pero al revés, la llamas printReversef, la invocas igual que printf y listo...


funcion PrintReverse(char[] Cadena, otros parametros que quieras usar)
    entero j, k
   
    j = tamaño de Cadena

    bucle para k desde j-1 hasta 0 retrocediendo
        imprimr caracter cadena[k]
    fin bucle
fin funcion


No veo necesario que hagas un réplica del contenido... solo imprime carácter a carácter, pero empezando por el final y retrocedeidno.

Hacerlo recursivo, en vez de iterativo, consume más recursos y es más lento, y para algunos menos evidente su funcionamiento (básicamente no queda tan claro cuando finaliza, como un bucle for).
#2427
Qué clase de ayuda esperas tener...? llevalo al técnico, a que lo cambie y funcione correctamente.

Y eso suponiendo que realmente con la rotura fuera solo la del cristal y nada más que eso... en cuyo caso antes de que el técnico lo acepte, conviene demostrar que funciona correctamente bien, para evitar equívocos...

Si tienes garantía, debiste usarla si lo ampara, o bien llevarla al servicio técnivo de Samsung... que se supone serán capaces de arreglarlo sin estropear nada. Incluso ver si el propio Vodafone ofrece algo al respecto en caso de rotura (a veces al adquirirlo, pagas un seguro por cosas así, y conviene aprovecharlo)...
#2428
Fantástico, se agradece la claridad de exposición y la legibilidad, que inevitablemente te hacen... ...cambiar de página, cuando tan solo has leído lees dos palabras y hechas un vistazo hacia abajo y ves una sola línea en blanco tras 400 líneas de texto.

Añade claridad si quieres que alguien lo lea...
#2429
No he repasado tod el código, me he detenido donde ya he visto errores...

Hasta donde yo sé, el formato PGM la cabecera es muy sencilla y no incluye un campo llamado 'escala'. No había visto la estructura y el nombre elegido, se presta a confusión...


Estructura CabeceraPGM
   Magic       // dos bytes "P2" ó "P5" para formato ASCII y binario respectivamente.
   Ancho     // píxeles de ancho en formato ASCII.
   Alto          // Ídem de alto    "
   NivelesGris   // cantidad de niveles de grises usados -1. Es decir un valor 255, implica 256 niveles de gris.
fin estructura


Y luego vienen los datos... a razón de 3 bytes (caracteres, digitos por píxel)... es decir
Si el primer píxel tiene el valor 82, en el fichero aparece " 82"
Si luego le siguen píxeles con estos valores: 7, 123, 94, 5, 0 210, estará así escrito tal cual lo ves aquí (a continuación), igual si lo abres con el bloc de notas...
  " 82  7123 94  5  0210"

Y efectivamente saltando las líneas de comentarios, que empiezan con sharp '#' y acaba en la propia línea (hasta encontrar el salto de línea). Aunque no hay restricción en esa cantidad de caracteres de comentarios típicamente se limita a no más de 70, pero no conviene fiarse de ese valor, pués es solo una sugerencia del creador.

Fíjate que al comienzo de cada línea de la imagen es valído ambas situaciones: para un valor 7, 22, 33
"  7 22 33"
" 7 22 33"
"7 22 33"
Es decir el primer píxel de una línea no exige los 3 caracteres, porque el valor podrá leerse sin ambigüedad, puede tener un espacio, 2 o ninguno. Nota además que esto es válido para cualquier línea, es decir una puede tener las 3 cifra, otra 2 y otra 1... aunque debe leerse así, para escribir, conviene que todas tengan la misma cantidad, porque el objetivo primordial de estos formatos es poder abrirlos y editarlos con el bloc de notas. Una desalineación al comienzo, puede complicar precisamente la edición y claridad de la imagen.

Rehaz de nuevo tu código para leer correctamente de esta manera y si sigues teniendo errores pasa a preguntar de nuevo...



mmm... acabo de ver la estructura que tenías y por tanto con 'escala', no te estés refiriendo a nada relativo a la imagen si no a los niveles de grises, que has querido llamar 'escala de grises', pero acortado... ok...

Nota que cuando, niveles de gris (escala), es distinto de 255, exigirá interpolar los valores, es decir si en origen una imagen tiene el valor 255 y ahora tu lo reduces a solo 8 niveles de gris, al ir los valores entre 0 y 7, deberás dividir cada valor entre 32, ya que 256/8 = 32... (para escribir en fichero, para mostrar la imagen siempre habrá que hacerlo en el rango 0-255)

...pero igualmente se seguirán necesitando SIEMPRE 3 digitos para representar en fichero el valor de cada píxel...
#2430
En realidad hay que tener cuidado con estos sitios... quizás su auténtica intención es recabar más emails, que no tienen aún en su lista, justo porque tú se la proporcionas. ¿cómo saberlo?.

Pero claro, la idiotez de la gente parece no tener límites, al fiarse una y otra vez de supuestas empresas-webs que son auténticos desconocidos... pero en cambio desconfiar siempre de su vecino, hermano primo o amigo.