• Martes 13 de Mayo de 2025, 05:49

Mostrar Mensajes

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


Mensajes - Nebire

Páginas: 1 ... 8 9 [10] 11 12 ... 29
226
La taberna del BIT / Re: Que le paso a Michael Jackson?
« en: Viernes 26 de Junio de 2009, 15:42 »
Cita de: "shadow_rev"
Confirmado.... Paro respiratorio según las noticias de las 7 (Canal Caracol - Colombia). Lastima
Como programador deberías saber que el supuesto problema según los síntomas de fallo de un programa y el problema real pueden ser cosas distintas.

Es decir, no hay nada confirmado mientras no se le practique la autopsia, y está a fecha de ahoy y ahora no ha sido practicada y/o publicada.

227
La taberna del BIT / Re: De la Ruaaaaa, Mooontoooneroooooo
« en: Viernes 26 de Junio de 2009, 00:00 »
Cita de: "m0skit0"
...Eso sí, morro no les falta a los jueces españoles para condenar actitudes de otros países...
Mira Mosquito, esta noticia a lo mejor te interesa..: La justicia española ya no podrá investigar delitos cometidos en otros países si no cumplen determinadas condiciones, por otro lado muy lógicas.

http://www.20minutos.es/noticia/475876/ ... -nacional/

228
VB .NET / Re: Error al abrir una forma en Windows Form
« en: Jueves 18 de Junio de 2009, 23:01 »
Cita de: "ricklopezz"
Ja,ja,ja,ja  
La carcajada distingue al loco y al infeliz... se rié sin ganas y de cualquier cosa donde nadie encuentra gracia.

Cita de: "ricklopezz"
Te dolio verdaD?
No. Me avergüenza que gente como tú, se vaya arrastrando como gusano... y cuando algo le molesta (normalmente por su escaso cerebro) se revela cual serpiente, odiosa y cargada de veneno.

229
Programación de Videojuegos / Re: PelotaGame - el juego de pelota
« en: Jueves 18 de Junio de 2009, 22:54 »
Cita de: "txesmi"
Güenas peña!
He estado inmerso los últimos meses en la creación de un juego de pelota a mano con el GameStudioA7.

pelotagame(dot)com

Es un juego multijugador online de pelota mano a mano en 3D. Todavía le queda mucho trabajo aunque ya empieza a tener forma.

Espero que os guste!
Salud!
Hola.
No tiene mala pinta. Un par de cosillas...
Quizás sea porque el vídeo es pequeños y mi pantalla muy grande, pero se ve muy oscuro, ¿ no costará seguir la trayectoria de la bola en ese ambiente..?
Y lo otro, ¿ si el juego es entre 2 jugadores reales, el movimiento de cámara a quien sigue ?. ¿ Y si es jugador contra máquina ?.

230
VB .NET / Re: Error al abrir una forma en Windows Form
« en: Jueves 18 de Junio de 2009, 22:41 »
Cita de: "ricklopezz"
Gracias por lo que respecta a la ayuda que pretendiste dar, pero que en lo particular no me funcionó.

Esto funciona perfectamente, no hay ningún misterio en el código... el único modo de que no funciones es que el formulario 'FrmAltaRegistros' tenga una referencia nula, pero de eso debes cuidarte, tú, puesto que eres tú quien crea dicho formulario, en cualquier caso si falla te señalará el mensaje.... de error pertienente. Si me sigues diciendo que te falla, por favor te exijo que me muestre completamente el error devuelto, no acepto que digas que no funcionó sin su correspondiente demostración. En VB NET un error se proporciona tan detallado que básicamente ni podrías falsificarlo (además habría que saber cómo hacerlo)... dame el stacktrace del error si insistes en que no funciona o cállate.

Lo otro que pueda fallar es lo que hagas en la función Carga_RegistroSeleccionado, pero ahí no entro eso lo has programado tú y lo que haga bien o mal no me toca en nada.
Código: Visual Basic
  1.  
  2. Try
  3.     set ChildForm = new FrmAltaRegistros                    
  4.     ChildForm.show                                            
  5.     Call ChildForm.Carga_RegistroSeleccionado(oRows)  
  6. Catch ex as exception
  7.        messagebox.show ex.message
  8. finnally
  9.     ' .........    
  10. end try
  11.  

Cita de: "ricklopezz"
Tuve que hacerlo de otra manera que publicaré más adelante para gente que tenga el mismo problema.
En programación hay varios caminos para hacer la misma cosa... unas más sencillas y otras más complejas, sin embargo resulta absurdo hacer complejo una cosa que de por si es sencilla, aunque lo importante muchas veces es que funcione...

Cita de: "ricklopezz"
, ya que te falta muchisima humildad para lograrlo.
Claro, claro, fíjate si soy arrogante  que en vez de pedirte por favor ( y por favor quita esa coletilla  ) te lo exigido, porque un arrogante nunca pide, exige. Fíjate si soy arrogante  que la premisa para contestarte es que me adores, me pagues, me lisonjees contínuamente, y como no lo has hecho no te he respondido, fíjate si soy arrogante  que en vez de pedirte que te expreses como una persona te he exigido que te expreses como un esclavo... claro, si leyendo mi mensaje se ve clarísimo mi falta de educación y mi nula humildad...

Las personas hablan sin decir a cada momento: si bwana, no bwana, gracias bwana: Si no fuera humilde eso me inflaría el ego, precisamente porque soy humilde, me desagradan esas frases innecesarias y precisamente porque soy humilte te he pedido por favor que te expreses como una persona. Si te sientes agradecido es suficiente que cuando soluciones tu problema te pases a dejar un mensaje diciendo 'me funcionó, pero no para agradecerme a mi nada (yo no necesito ni requiero agradecimientos de ningún tipo), sino para ayudar a otros, cuando busquen si un problema está resulto o no eso les ayuda a no perder tiempo.

Si te has enfadado será porque no has entendido mi mensaje o será porque has hecho un esfuerzo supremo en humillarte para 'agradecer al uso' esperando con ello recibir algún trato de favor y ahora te sientes dolido porque descubres que no había hecho falta. Tu mismo.

231
Visual Basic 6.0 e inferiores / Re: Hilo en VB6
« en: Jueves 18 de Junio de 2009, 02:44 »
Cita de: "Azymuth"
. . . pero no hubo una respuesta a mi pregunta . . .  

¿Te refieres a esta pregunta ?:
Citar
..en ese momento manda el error '91'
Ya está contestada. Un objeto sólo se puede utilizar después que ha sido creado, no antes. Se te ha hecho saber que cualquiera de los parámetros puede producir el error, pero sólo un adivino puede saber cuál y cuando si el interesado no da ningún detalle de las pruebas que se le indican.

Si te refieres a esta pregunta:
Citar
Espero algun experto me diga como resolver este problema
, Hay dos respuestas, la 1ª básicamente es consulta al brujo con su bola de cristal. La 2ª requiere utilizar fórmulas, primero determinando cual aplicar y luego utilizando los datos para rellenar la fórmula, pero como el interesado no aporta datos, sólo llora como un niño, (doctor, me duele, que tengo?... si no nos dejas auscultarte como podremos estar seguro...) no se puede ni rellenar una fórmula, ni lo previo siquiera, elegir la fórmula adecuada.

Si te refieres a otra pregunta, yo no veo ninguna pregunta concreta.

La programación es ante todo datos, un caudal de datos, si el niño sólo llora y el doctor no puede auscultarle, si el niño sólo llora y no responde a las preguntas del doctor, si el niño sólo llora y el niño no se somete a las pruebas que el médico estima, entonces el niño debe irse a casa, para evitarnos dolores de cabeza con tantos lloros. Es probable que se muera ( el proyecto lo tube que abandonar ), pero también es probable que el niño, prepotente él, sólo quiera hacerse notar, de eso nos daremos cuenta, cuando tiempo más tarde el niño anuncie que se ha curado y no ha sido gracias a ningún doctor, entonces, si esto ocurre, reconoceremos en ello a un troll. No hay bosque sin duende ni foro sin troll.

La programación es ante todo datos, un caudal de datos lo demás es palabrería para entendernos. Si te dedicas a esto eres un caudal seco. Desde tu exposición inicial, en las otras 2 intervenciones, no has aportado ni un sólo dato de lo requerido, pero quejas y lloros... bastantes. No nos vengas con historias de otros foros ni leches, eso no son datos del problema, sobra.

Tu problema primero es tu actitud. Con prepotencia, planteas tus quejas, lloras, pero cuando se te piden síntomas respondes con más quejas y más lloros. Cuando se te indican pruebas responde con más quejas y más lloros. Como a fin de cuentas, a mi me importa un güevo, tus problemas, como además no soporto a los llorones y sobretodo porque no soy adivino, sin datos no puedo establecer qué le duele al niño. Has perdido tu crédito, al menos yo no voy a perder más tiempo contigo.

232
Visual Basic 6.0 e inferiores / Re: Frames Mendigos
« en: Miércoles 17 de Junio de 2009, 05:28 »
Cita de: "ArKaNtOs"
...dichos controles necesito albergarlos en un SSTab o un Frame (Cualquier Objeto Contenedor), mi pregunta es ¿como hago esto en Tiempo de Ejecución?

Alguna idea, he investigado un buen y nada, la verdad es que no encuentro ninguna propiedad de los objetos que me diga que es hijo de un objeto u algo por el estilo...
Hobre no nos digas eso...

Si casi, casi das con ello...

Mete 1 picture, un frame, 1 text y 1  botón en el formulario, copia este código y prueba a pulsar el botón varias veces, esperando entre cada pulsación
Código: Visual Basic
  1.  
  2. Private Sub Command1_Click()
  3.     Static ciclo As Byte
  4.    
  5.     Select Case ciclo
  6.         Case 0
  7.             Set Text1.Container = Picture1
  8.             Text1.BackColor = vbYellow
  9.         Case 1
  10.             Set Text1.Container = Frame1
  11.             Text1.BackColor = vbRed
  12.         Case 2
  13.             Set Text1.Container = Form1
  14.             Text1.BackColor = vbBlue
  15.     End Select
  16.     ciclo = (ciclo + 1) Mod 3
  17.     Text1.Move 0, 0
  18. End Sub
  19.  
  20.  

Espero que para la próxima busques mejor...

233
La taberna del BIT / Re: De la Ruaaaaa, Mooontoooneroooooo
« en: Martes 16 de Junio de 2009, 19:48 »
Cita de: "Eternal Idol"
Si PERO ojo, los que nos fuimos o los que tenemos acceso a Internet NO somos mayoria. De cualquier manera yo no soy pesimista ni estoy resignado, .
Creo que te entiendo... al estar fuera, te permite ver con mayor claridad algunas cosas y sobretodo no se ve uno coartado por las influncias que sobre el país ejerce la 'fuerza' dominante.
Además cuando uno está afuera aprecia mejor incluso cosas que antes no apreciabas.

Cita de: "Eternal Idol"
volveremos a ser un pais digno por este camino.
Yo creo que sí.
El peor enemigo hoy por hoy de un país (en general) es la corrupción política.

234
La taberna del BIT / Re: De la Ruaaaaa, Mooontoooneroooooo
« en: Martes 16 de Junio de 2009, 19:04 »
Cita de: "Eternal Idol"
¿Y si escuchamos antes de dar nuestra opinion?.
Hombre, ahí si te doy la razón... quizás la frase está inacabada o dentro de un constexto, pero como lo has entrecomillado sin puntos supensivos, pués pensé que la frase era textual y que ahí empieza y acaba, vamos que no había lugar a interpretar otra cosa que lo que dice.

Me tomaré el tiempo de escucharlo...
Bien, no he encontrado el vídeo donde se dice exactamente eso, pero veo que es un programa de humor y parece ser que (teniendo en cuenta tu comentario) será una sátira...

Pregunta para argentinos: Al escuchar varios de ellos, la impresión que me queda es que mucha gente debe ser pesimista acerca de la política en Argentina y lo peor es que parece resignada a ello... ¿ es sólo mi impresión o es más o menos así ?

235
La taberna del BIT / Re: De la Ruaaaaa, Mooontoooneroooooo
« en: Martes 16 de Junio de 2009, 19:00 »
Cita de: "m0skit0"
Cita de: "Nebire"
porque, salvo los de extrema derecha dudo que nadie más en España coincida con esa opinión
¿Seguro? ¿Y a qué viene tanto rollo entonces con buscar las fosas comunes?
Una cosa no tiene nada que ver con la otra. Los que no quieren que se busque es porque temen que eso traiga al presente rencillas del pasado. Los que quieren buscar (se supone) que sólo quieren encontrar los restos de sus antepasados para darles sepultura 'familiar'...

Cita de: "m0skit0"
¿Cuándo en España se ha condenado de forma oficial el franquismo?  
Una cosa no necesariamente debe ser condenada para que todo el mundo esté de acuerdo en que tal o cual cosa está o estuvo mal.
Condenar la historia reciente, es una vía rápida para entrar otra vez en la dinámica del odio de las ideologías. En España la Democracia supuso un punto y aparte y no se firmó nada de condena de la época anterior básicamente porque la democracia fue una cesión del franquismo no una capitlación del mismo.

Cita de: "m0skit0"
Eso sí, morro no les falta a los jueces españoles para condenar actitudes de otros países, pero siempre y cuando no sean algún aliado de la OTAN. Pero a Rusia y China sí se les puede condenar por antidemocráticos :bad:  
Esto ya ni tiene que ver con el franquismo...
Además esta afirmación no tiene mucho sentido muchos países que antes estaban integrados en el 'Pacto de Varsovia' (que para tu conocimiento era la fuerza opuesta a la OTAN) ahora forman parte de la OTAN por tanto la referencia a Rusia queda desacreditada por cuanto que Rusia antes incluía a muchas repúblicas que ahora forman parte de la OTAN , de la que ellos libremente han decidido formar parte...
A China no es que se le acuse  de antidemocrática, es que no es democrática, no tiene una Democracia establecida. No es ninguna acusación es una realidad.
Se puede hacer una acusación de antidemocracia a un país que tiene una Democracia aprobada pero se duda de que se aplique, pero si no tiene democracia , no cabe acusación simplemente es la realidad.

236
La taberna del BIT / Re: De la Ruaaaaa, Mooontoooneroooooo
« en: Martes 16 de Junio de 2009, 17:37 »
Citar
"En un pais enserio SE FUSILA, como hizo Franco para acabar con la falta de dialogo."

Pués esta frase es desafortunada... cuando eso ocurría, España no era una 'páis enserio', era un país de pena. Y la razón no era 'falta de diálogo', más bien no existían razones, la mayoría fueron gente de ideología de izquierdas o 'acusados' de ello y delincuentes habituales sin juicios justos... Así que indistintamente de lo que diga quien dice eso, al decir esa frase está afirmando que España en esa época era un 'país enserio', en cierto modo insulta a la memoria de España, porque, salvo los de extrema derecha dudo que nadie más en España coincida con esa opinión.

En esa época España vivía una dictadura y cualquier páis que vive bajo el yugo de un dictador (sin entrar a valorar su idelología) no es otra cosa que un país de chiste, un país de pena.

237
VB .NET / Re: Error al abrir una forma en Windows Form
« en: Sábado 13 de Junio de 2009, 13:17 »
OK.

entonces cambia el showdialog por sólo show.
Dado que lo tenías como un FrmChild pensé que realmente querías mandarle el foco una vez abierto.

Con show tras terminar el evento load del formulario regresa a la siguiente instrucción tras frm.show

y por favor quita esa coletilla de 'ojalá puedan ayudarme', a mi me resulta injurioso... que todo el que entre diga lo mismo, la ayuda no depende del ojalá, ni de pedirlo con más o menos vehemencia. Depende de factores humanos exclusivamente, tiempo libre, ganas de dedicar tu tiempo libre, planteamiento del problema (por ejemplo si no fueras novato con tu código sin etiquetar no me hubiera molestado en responder), etc... pero no porque alguien pida algo de rodillas se le atiende, a mi, antes bien, me ofende como ser humano ver que otro se arrastre como un gusano, no es necesario.

238
VB .NET / Re: Error al abrir una forma en Windows Form
« en: Viernes 12 de Junio de 2009, 09:01 »
Hola.

No he mirado a fondo tu código (no utilizas etiquetas para presentarlo ordenadamente, y resulta incómodo de leer), pero he visto algunas cosas.

el error lo puedes corregir fácilmente las esplicaciones en el código:
Código: Visual Basic
  1.  
  2. ' elimina estas líneas
  3. ChildForm.MdiParent = MDISanfer
  4. ChildForm.Focus()
  5.  
  6. ' y cambia está línea:
  7. ChildForm.Show()
  8. ' por esta otra
  9. ChildForm.ShowDialog()
  10.  
  11.  



Te comento alguna cosa...
Si tienes un formulario llamado FrmAltaRegistros, entonces puedes crear instancias de él, sin perder tiempo dando vueltas a la farola.
Código: vb.net
  1.  
  2. Private Sub Carga_Forma_Datos(ByVal oRows As DataGridViewSelectedRowCollection)
  3.   Dim ChildForm As FrmAltaRegistros
  4.  
  5.  
  6.     set ChildForm = new FrmAltaRegistros   ' Creamos una instancia de un objeto que sabemos que existe..
  7.     ChildForm.showdialog     ' lo mostramos y si quieres lo mueves de posición...
  8.     Call ChildForm.Carga_RegistroSeleccionado(oRows)    ' ejecutas lo que se supone que hace..
  9. End sub
  10.  
  11.  
  12.  
  13.  
  14. ' si tienes dudas acerca de si el formulario existe, puedes envolverlo en un condicional
  15.     if FrmAltaRegistros  isnot nothing then
  16.        set ChildForm = new FrmAltaRegistros                      
  17.        ChildForm.showdialog                                      
  18.        Call ChildForm.Carga_RegistroSeleccionado(oRows)  
  19.    else
  20.        messagebox.show ("imposible crear una instancia del formulario FrmAltaRegistros, no tienes establecida una referencia..."
  21.    end if
  22.  
  23.  
  24.  
  25. ' también podrías hacerlo como un intento...
  26. Try
  27.     set ChildForm = new FrmAltaRegistros                    
  28.     ChildForm.showdialog                                            
  29.     Call ChildForm.Carga_RegistroSeleccionado(oRows)  
  30. Catch ex as exception
  31.        messagebox.show ex.message
  32. finnally
  33.     ' .........    
  34. end try
  35.  
  36.  

239
Visual Basic 6.0 e inferiores / Re: duda con Qbasic
« en: Jueves 11 de Junio de 2009, 06:59 »
Cita de: "adrianes"
mm si muchas gracias nebire ahora volviendo a esto mi profesor tiene mm como 65 años el nos dijo q para ser buen programador se comienza desde 0 y nos dijo q si aprendiamos a usar q basic  era la base para comenzar a programar en c++
y con respecto alas etiquetas pues no me habia dado cuanta en cuanto a los comandos y las atiquetas el profe me dijo = q olvidara lo de 10 20 30 por q despues en programas mas complejos se podria venir un catastrofe y seria mejor repetir el programa q arreglarlo  en cuanto al sonido el profe no nos quizo decir como nos dijo algo de q usaramos una tabla y usaramos el comando  sound 2000,2  pero aun sigo sin saver q onda y pues me gustaria saber  ya que tengo unos proyectos
que quiero terminar

de ante mano gracias y spero una respuesta..

Aprovechando que he ido al baño y que me he desvelado... te coloco un par de códigos. Ahora bien, después de la explicación que me has dado acerca del profesor, creo que se conformará con algo bastante, bastante, bastante más sencillo especialmente si te especifica que uses el comado sound, cualquier parecido con la realidad requiere mucha imaginación para que sea tomado como voz...

Primero vamos a hacer que suene algo, te explico que significa cada cosa de las que usamos, in situ.
Código: Visual Basic
  1.  
  2. ' para empezar algo sencillo
  3.  
  4. ' definimos una 'cadena' de sonido:
  5. dim p as string
  6.    p = "ACDAEFAEGABCD" ' las notas musicales Do,Re,Mi,Fa... están asociados a las letras que van de la A a la G,
  7.     ' para no tener que calcular escribe en un papel las notas y debajo de cada una la letra equivalente, así traducir es muy fácil... como hago aquí
  8.    ' esto es : DO RE MI FA SOL LA SI
  9.   '                 A  B    C  D   E     F  G
  10.     ''por tanto esta cadena es nuestra partitura: Do Mi Fa Do sol La DO SOL SI DO RE MI FA , que produce un sonido como de 'espera'...
  11.  
  12.    PLAY "O0 L12"   ' SELECCIONAMOS UNA OCTAVA  (Octave 0 cero) Y LA DURACIÓN (Length 12) DE LAS NOTAS
  13.    
  14.    CLS : LOCATE 1, 1: PRINT "Pulsa  s para salir."
  15.    DO
  16.       PLAY "X" + VARPTR$(P)  ' aquí le damos la orden de tocar (eXecute) las notas definidas en la direccion de meoria que le corresponde a la variable p
  17.      PLAY "P4"          ' hacemos una pausa (Pause de 4)
  18.    LOOP   WHILE INKEY$ <> "s"    ' repetimos hasta que se pulse la tecla s (minúscula)
  19.    END   ' finaliza el programa
  20.  
  21.  
Si quitas los comentarios verás que el código es en realidad muy breve
Ahora que ya conoces la ´correspondencia de notas - letras voy a localizar alguna pequeña partitura por google y 'traducirla' al comando play (lo que vamos a buscar es algo así como 'Cancones para faluta' o cadenas específicas como 'Re Mi Sol'

Misión imposible: mi mi sol la mi mi _ re re mi mi sol la  _ mi mi re MI  habrá que jugar con el tempo y pausas para que se parezca lo más posible
m = "CCEFCC BBCCEF CCDC" No suena muy bien porque con faluta tu vas dejando los tiempos y duración de nota precisos, es es lo que falta añadir al comando. Como no soy músico te lo dejo  ligeramente modificado, para que te ilustre en el proceso de como debe hacerse:
M = "L10 O0 CP32 CP32 L12 EFP32 L10 o0 Cp32Cp20 BBCCEFp20 CCDC"
como ves sólo he añadido metacomandos que ya conoces Ln On y Pn
para probarlo copia la cadena dentro del ejemplo anterior y sustituye en ' + Varptr$(p) por  + Varptr$(m)
si previamente has probado con 'm = "CCEFCC BBCCEF CCDC"' verás que ya ha ganado un poco más para que suene como lo reconocemos...

Ahora te pongo un ejemplo para usar de modo asíncrono el play de modo y te comento in situ el código...
Código: Visual Basic
  1.  
  2. ' definimos un evento play, al caso le estamos indicando que cuando queden 3-1 notas en el buffer vaya a la etiqueta indicada
  3. ON PLAY(4) GOSUB SuenaSeleccionA
  4. 'Ahora activamos la caza del evento  (on play... es una declaración de evento)
  5. PLAY ON  ' cuando queramos podemos hacer un play off y un play stop
  6.  
  7. dim Elisa as string
  8. ' nuestra partitura 'Para Elisa', las notas musicales son las letras: EDEDBCA
  9.  Elisa = "o3 L8 E D+ E D+ E o2 B o3 D C L2 o2 A"  ' el + ó si fuera el - indica que esa nota se usa con una octava mayor que la actual pero sin cambiar de octava (sólo para esa nota).
  10.  
  11. PLAY "MB X" + VARPTR$(Elisa$)
  12.  
  13. CLS: LOCATE 1, 5: PRINT "Cuando pulses una tecla paramos.";
  14. DO WHILE INKEY$ = "" : LOOP
  15. END
  16.  
  17. ' rutina que se ejecuta cuando salta el evento. en cualquier momento podemos alterar el valor de Elisa
  18. SuenaSeleccionA:
  19.     PLAY "MB X" + VARPTR$(Elisa)  ' MB es un comando para definir que se ejecute asincronamente, (Music Background)
  20.   ' para ejecutarlo sobre cóodigo se usa MF (Music Foreground) si no se especifica nada se supone MF por defecto.
  21. RETURN
  22.  
  23.  

Detrás de VARPTR$(Elisa) puedes poner más cosas, por ejemplo una pausa de 4 :
PLAY "MB X" + VARPTR$(Elisa)  + "P4"
o mejor aún otra línea de comando,
PLAY "MB X" + VARPTR$(Elisa)  + "P4" + Varptr$(Ponpon)
recuerda que las variables pueden cambiar su valor cuando quieras:
Código: Visual Basic
  1. Elisa1= "lo que sea"
  2. Elisa2="otra cosa"
  3. DO WHILE INKEY$ = ""
  4.      k= (k +1) mod 32767
  5.  
  6.     if k mod 3=0 then
  7.         Elisa=elisa2
  8.     else
  9.        Elisa=elisa1
  10.     end if
  11.  LOOP
  12. END
  13.  

Lo ilustramos haciendo los cambios pertienentes:
Código: Visual Basic
  1.  
  2. ON PLAY(4) GOSUB SuenaSeleccionA
  3. │PLAY ON
  4. DIM Elisa AS STRING
  5. DIM Elisa1 AS STRING
  6. DIM Elisa2 AS STRING
  7. DIM k AS INTEGER
  8.  
  9. │ Elisa1 = "o3 L8 E D+ E D+ E o2 B o3 D C L2 o2 A"
  10. │ Elisa2 = "o2 L7 F E- F E- F o1 C o2 E D L2 o1 B"
  11. │ Elisa = Elisa2
  12. │ PLAY "MB X" + VARPTR$(Elisa)
  13. │ CLS : LOCATE 1, 5: PRINT "Cuando pulses una tecla paramos.";
  14. │  DO WHILE INKEY$ = ""
  15. │      k = (k + 1) MOD 32767
  16. │      ' PLAY OFF
  17. │      IF k MOD 3 = 0 THEN
  18. │          Elisa = Elisa2
  19. │      ELSE
  20. │          Elisa = Elisa1
  21. │      END IF
  22. │      ' PLAY ON
  23. │      ' PLAY "MB X" + VARPTR$(Elisa)
  24. │  LOOP
  25. END
  26. │SuenaSeleccionA:
  27. │    PLAY "MB X" + VARPTR$(Elisa) + "p4"
  28. │RETURN
  29.  
  30.  

Para una descripción completa del comando play consulta la ayuda, en el hipotético caso de que la ayuda que venga con QBasic no lo incluyera o feura ineficaz me lo señalas y te explico cada opción..
Nota: la partitura puede ser en minúsculas mayúsculas indistintamente y puede haber espacios donde quieras, incluídos en medio de cada metacomando por ejemplo: "O4AB-CDDAC" puede ser espaciado así: "O4 A B- C D D A C", ó así: "O4A B- CDDAC" e incluso"O 4..." 4 es una opción de Octava, pero lo lógico es que las separaciones sean porque te ayuden a localizar o entenderlo mejor...

Ahora vamos con sound, como no tiene misterios basta el código (nota que he incluído pausas donde me ha parecido para que diferencies donde acaba un sonido y empieza el de otro bucle:
Código: Visual Basic
  1.  
  2. DIM k AS INTEGER, d AS INTEGER
  3.   CLS : LOCATE 1, 5: PRINT "Cuando pulses la tecla 's' paramos el bucle de 'ambulancia'...";
  4. FOR k = 800 TO 900 STEP ((k MOD 5) + 1)
  5. │    d = k MOD 4
  6. │    SOUND k, d
  7. NEXT
  8.  
  9. DO
  10. │   FOR k = 440 TO 1000 STEP 5
  11. │      SOUND k, k / 1000
  12. │   NEXT
  13. │   FOR k = 1000 TO 440 STEP -5
  14. │     SOUND k, k / 1000
  15. │   NEXT
  16. │   PLAY "p4"
  17. LOOP WHILE INKEY$ <> "s"
  18.    
  19. │   FOR k = 1000 TO 980 STEP -5
  20. │      SOUND k - 40, k / 1000
  21. │      SOUND k, k / 1000
  22. │      SOUND k + 100, k / 1000
  23. │      SOUND k + 20, k / ((k * 2) / 4)
  24. │   NEXT
  25. │   PLAY "p5"
  26.  
  27. │   FOR k = 300 TO 100 STEP -5
  28. │      SOUND k - 40, k / 1000
  29. │      SOUND k, k / 1000
  30. │      SOUND k + 100, k / 1000
  31. │   NEXT
  32. │   PLAY "p8"
  33.  
  34. │   FOR k = 100 TO 37 STEP -5
  35. │      SOUND k, (k * (k / (1 / 100 + 20))) / 100
  36. │   NEXT
  37.  
  38.  
Para lograr con sound algo parecido a voz, tienes que hacer como te indicaba arriba, identificar por lo menos 3 o 4 frecuencias para cada letra, su tempo y tono . Descomponer en un bucle las palabras y hacer llamadas a subrutinas (gosub etiqueta) que tiene las instrucciones sound que puedan asemejarse a sonidos de letras tal como tu puedas apreciar... Para la identificación tendrías que grabar tu voz en WAV (con la misma grabadora de sonidos de windows) y luego con un editor de sonido WAV ver el muestreo de cada letra y sacar conclusiones que puedas traducir a sound, típicamente serán varias frecuencias con una duración muy breve y/o quizás que se repitan en un bucle un determinado nº de veces (por ejemplo para la r)... las rutinas del ejemplo de sound las he seleccionado a propósito para ilustrarte detalles (magnificados en el tiempo) para detalles en principio no posibles con sound pero que puedan asemejar a ecos, reverberación, etc... como hablamos de tiempos muy cortos sería difícil apreciar en los ejemplos, por eso están magnificados en la cantidad de frecuencias y en la duración de las notas.

Ya nos pondrás algún cóodigo de tu progreso.
p.d.: he olvidado quitar las rayitas de los 2 últimos códigos, si coias y pegas el texto deberás eliminarlas manualmente. Si lo transcribes manualmente simplmenete ignora esas rayitas...

240
VB .NET / Re: sobre un evento
« en: Jueves 11 de Junio de 2009, 04:03 »
Pués no, no te explicaste bien, antes preguntabas como lograr que varios controles respondan a un evento, ese tema está resuelto, pero ahora dices que no es ese tu problema.
Lo cierto es que la pregunta del primer mensaje si la entendí (aunque no fuera eso lo que querías preguntar), en cambio ahora tengo mis dudas sobre si entendí correctamente tu problema.

Para hacer preguntas correctamente tienes que aislar el problema del caso que ter atañe, si no consigues separar lo uno de lo otro sólo ayuda a la confusión.

De acuerdo a lo que creo que haber entendido será con lo que te conteste, si equivoqué tu explicación intenta redefinirlo con más claridad.
 
Vamos a ver, parece ser que tienes varios textbox y parece ser que tienes un botón que al activarlo pasa unos datos al textbox activo (no entiendo para qué)... luego dices que tienes que desactivar textbox para que en el caso de que al introducir un dato y dicho dato coincida con el que se ingresa a través de ese botón no produzca un error porque luego genera unos datoa extra tomados de otros campos...

Bueno si esto es así, el problema es bastante sencillo, tanto que me hace dudar, al punto que me obliga a preguntarme si he interpretado correctamente tu cuestión o si estás haciendo una idiotez...
Si un textbox contiene un código específico que difiere del código que deben ejecutar otros textbox, entonces la solución es atender dicho textbox en su propio evento aparte del resto. Reunir el disparo de eventos de varios controles a un mismo método sólo tiene sentido si todos ellos comparten el mismo código, si cada textbox ha de hacer una cosa distinta, no sólo no es adecuado sino absurdo reunir los eventos en un único método, porque luego tendré que separar lo que debe hacer uno de otro.

en el supuest caso de que todos los textbox ejecuten el mismo código pero además luego cada uno (o determinados de ellos) ejecuten adicionalmente o alternativamente otro código, entonces debes resolverlo de 1 de 2 maneras:
Si reúnes los disparo de evento en un mismo método  , si hay código que se ejecuta de modo particular previo al código común debes seleccionar el origen:
Código: vb.net
  1.  
  2. private sub textbox1_textchanged(....) handles textbox1.textchanged, ....
  3.    ' 1º  código particular previo de cada caso, si no hat código previo particular para cada caso, esta selección se elimina  
  4.    select case sender.name.ToUpper
  5.              case "TEXTBOX1"
  6.                      ' código particular para este caso...
  7.            case "TEXTBOX2"
  8.                     ' código particular para este caso
  9.           cas else
  10.                  ' código previo particular para el resto
  11.     end select
  12.  
  13.   ' 2º código común (si existe) para todos los textbox
  14.  
  15.  ' 3º código particular después del código común (si existe) para cada caso
  16.   select case sender.name.ToUpper
  17.              case "TEXTBOX8888"
  18.                      ' código particular para este caso...
  19.            case "TEXTBOX345", "TEXTBOX21", "TEXTBOX45", "TEXTBOX23" ' por ejemplo si 4 textbox comparten el mismo código
  20.                     ' código particular para este caso
  21.           case "TEXTBOX_PISTOLA"
  22.                     ' código particular para este caso de pistola
  23.     end select
  24.  ' si procede pueden disponerse más pares ( como el paso 2º y 3º) que pudieran ser necesarios
  25. end sub
  26.  
  27.  

Como puedes ver puedes seleccionar que textbox ha sido el que cambió su texto para hacer la acción requerida, si tien antes o después del código común que hacer alguna cosa, pués con la selección previa y/o posterior se especifica el código para ese caso concreto que no comparte con todos.
Si los casos son muy complejos, entonces no conviene unificar los eventos en uno, si no que cada textbox tenga su evento o unir sólo los que actúen igual.
Código: vb.net
  1.  
  2. private textbox567_TextChanged(...) handles Textbox567.textChanged
  3.      '1º  código para este caso particular previo a un código común que comparte (si se da el caso)
  4.  
  5.     ' 2º código que comparte con otros controles (si se da el caso)
  6.       call TextboxCódigocompartido  ' invoca una rutina que realiza un código que comparten varios textbox
  7.  
  8.    '3º código particular (si se da el caso) posterior a un código común
  9.  
  10.  ' si hay más pasos donde se alternan código compartido y código particular se repiten los pasos 2º y 3º tantas veces como sea necesario.
  11. end sub
  12.  
  13. ' Hacer lo propio con el resto de textbox...
  14.  
  15.  

En fin, yo no veo que tengas que deshbilitar textbox para que se ejecute un código o se identifique tal o cual cosa correctamente, salvo que no haya entendido bien lo que tratas de explicar.
Pero vamos si simplemente no quieres que un textbox ejecute un código en la forma que dices, tal vez el código debas ejecutarlo en el propio botón... Además un textbox se utiliza para que un usuario introduzca manualmente datos, si estos datos han de preceder de un origen distinto que una introducción manual entonces el control adecuado no es un textbox, sino un label... que muestra el usuario los datos pero no le permite modificarlos y/alternativamente si precisa que luego el usuario modifiique manualmente dichos datos puede proveerse un textbox, pero decidir esto va en consonancia con las especificaciones del problema que sólo tu conoces y que no logras explicar bien o por lo menos yo no te entiendo.

Si pusieras código sería más fácil explicar lo que quieres y más fácil ofrecer una solución que 'oyendo al vuelo' y 'respondiendo al vuelo'

241
VB .NET / Re: sobre un evento
« en: Miércoles 10 de Junio de 2009, 13:48 »
A todos los controles no es conveniente, porque necesitaría tener un punto de unión es decir un textbox tendrá un evento textchanged, pero un timer jamás va a tener un evento textchanged porque no tiene una propiedad text, del mismo modo un picturebox podrá tener un evento ImageLoaded pero el timer no tiene propiedad picture ni propiedad image de modo que en base a qué propiedad deberá dispararse el evento, es decir cuando y porqué ?. El criterio debe ser unificado o sería un caos.

Justamente por eso cada tipo de objetos si que pueden ser unificados en torno a un evento que tienen en común, es decir, en este caso no es necesario crear un evento para ello, ya existe... sucede que no sabrás como utilizarlo...

Crea 4 textbox, haz dobleclick sobre el primero (textbox1) en el procedimiento de evento que se muestra en el código escribe:
messagebox.show ( sender.name & ": " & sender.text    )
Ahora todo lo que tienes que hacer es conectar los otros textbox a este evento,  cambia la vista en las propiedades desde propiedades a la de eventos, los otros textbox podrás engancharlos al mismo evento que que acabamos de escribir, incluso podrás engancharlo a ottros eventos diferentes y  de otros objetos, pero entonces como sabrás si el evento fue textchanged u otro ?.
si lo quieres hacer manualmente escribes al final de la firma del método ' private sub Tebox1_Textchanged(.....) handles Textbox1.Textchanged añades los demás ' , handles textbox2.TextChanged, handles Textbox3.Textchanged, etc...
No seas caótico, se coherente. Siempre podrás unificar en el mismo evento diferentes objetos cuya propiedad sea común y cuyo tratamiento sea común si no es el caso estárás haciendo un código complejo para nada... por probar, siempre podrás hacerlo.

En fin si hemos llegado a un lenguaje de objetos no tendría mucho sentido volver a generar código espagueti...

242
Visual Basic 6.0 e inferiores / Re: duda con Qbasic
« en: Miércoles 10 de Junio de 2009, 03:07 »
Antes de atender a tus preguntas, quería hacerte algunas aclaraciones.

1º QBasic es un QuickBasic venido a menos, es decir es una versión simplificada de la versión Quickbasic 4.5 . QBasic sólo tiene un mérito y es que se entregaba con el S.O. win-98, win-200 win-ME y no recuerdo si venía también con el win-95. Esto se hizo a raíz de que cuando cesó el desarrollo de QuickBasic se inició la versión 1 de Visual Basic (bueno no exactamente, pero los detalles no importan tanto).
Entonces si ni ya el quickbasic precisaba numerar sus instrucciones allá por el año 90 (año arriba, año abajo), significa que tampoco lo necesita QBasic que apareció algunos años después(quizás en el 95, no recuerdo ya la fecha exacta), si has leído los mensajes anteriores. La numeración son etiquetas y si bien las etiquetas son muy útiles las etiquetas basada en número lo son menos, especialmente si se etiqueta cada línea. Supongamos que tienes un código con 1000 líneas vas dejando saltos de 10 en 10 (tal como muestras en el ejemplo), bien supongamos ahora que quieres modificar parte del código sobre la linea 100 el resultado es que se añaden 80 líneas de código, bien pués eso supone que tienes que alterar las etiquetas de líneas de código que simplemente no has tocado.

Más aún si tienes algo como goto 1140 y está líneas ha sido 'absorbida' en el código añadido, entonces deberás etiquetarla a la línea que realmente hace referencia, pero si olvidaste hacerlo en el momento adecuado, puede ocurrir que ahora tengas bastante trabajo para buscar que línea era la que recibía el 'salto', por eso utilizar etiquetas de texto es bastante más útil. decir goto ContarUnidades no requiere tener que cambiar la etiqueta si añades líneas...

Para los que no lo sepan, decirles que en VB 6.0 podemos utilizar igualmente las etiquetas y numerar así cada línea del código... pero espero que a nadie se le ocurra hacerlo a no ser que sea sólo por probar...

2º qué edad tiene tu profesor y vosotros ?. No me imagino que razones lleva a un profesor a enseñar a sus alumnos QBasic, después de todo es un lenguaje de 16 bits, por lo menos Visual Basic 6 es un lenguaje de 32 bits, y es lo menos que se debería enseñar, en fin me gustaría conocer las razones... sabiendo edades quizás pueda hacerme alguna idea...

Bueno, pasando a tus cuestiones...
El altavoz del computador requiere mucho código para producir un código que permite 'hablar texto', de hecho yo lo desestimo. La voz humana es un conglomerado de frecuencias donde se intermezclan el tono, el timbre, el tempo etc...
Puedes intentar algo que permita ser 'reconocido' como voz pero con bastante trabajo. En cualquier caso necesitarás muchos conocimientos sobre el lenguaje, QBasic no tiene todos las intrucciones que tiene QuickBasic, por lo que para empezar creo que algunas instrucciones que luego te expondré posiblemente no las reconozca.

Un modo en que podrías acercarte a ello sería grabar tu voz en el computador, por ejemplo utilizando la grabadora de windows, grabando cada letra y luego analizarla desde un programa de edición y/o retoque de música, viendo el espectro en WAV, puedes ver que frecuencias utiliza cada letra, su tempo, etc... Ahora bien excepto las vocales el único modo de grabar otras letrás será dentro de una palabra y cortarlas juiciosamente. Una alternativa más cómoda pero probablemente menos viable es grabar todas las sílabas que tiene el español y analizando el espectro descomponer y obtener el patrón para cada una de ellas, el probelma es que si bien las letras son un puñado, las sílabas posibles son miles, por lo que el trabajo sería enorme. Tratar de implementar funciones que pronuncien una sola letra cada vez será laborioso (pero posible), sin embargo concatenar los sonidos de una y otra letra después resulta más pobre que si se hiciera sobre sílabas...

QBasic utiliza la instrucción Sound  para producir sonidos por el altavoz, su uso es equivalente a la API BEEP del VB 6.0  es decir
Sound frecuencia, duracion
frecuencia es un valor entre 37 y 32767 . Las frecuencias menores de 37 interaccionan con la electricidad de los mensajes del cerebro y por tanto están prohibidas y en la práctica frecuencias por encima de 12000-15000 son inaudibles para el ser humano (he observado muchas veces que las frecuencias entre 15000 y 20000 producen molestias a los gatos y perros)
La duración hay que interpretarla. la base de tiempo se estableción en 18'2 tics por segundo, por tanto  debes hacer una regla de 3 para que la duración sea la esperada. (el beep de VB usa duración en milisegundos y la frecuencia tiene las mismas consideraciones que aquí)

Sin embargo con sound no vas a hacer mucho, se utilizó masivamente para producir sonidos en los juegos (el resto de programas era prácticamente mudo), hasta que empezaron a aparecer tarjetas de sonido.

Para lograr algo, necesitas utilizar la instrucción Play, ahora mismo no recuerdo si QBasic la incluye. De hecho yo te propondría que si realmente quieres hacer el programa te busques e instales una copia de QuickBasic 4.5 Creo que es abandonware, por lo que por emule seguro que encuentras alguna copia.  

Mañana que encuentre un hueco, preparo un sencillo código que puedas usar como ejemplo y tomarlo como punto de partida si te apetece....
Ahora sólo te ofrezco un código equivalente a lo que tienes pero eliminado idioteces... del mismo.
Código: Visual Basic
  1.  
  2. DIM n AS STRING
  3. DIM e AS INTEGER
  4.                                                                                                                                                  
  5.     OPEN "A", #1, "C:borra.txt"                                                
  6.         INPUT "Nombre del sujeto: ", n                                                          
  7.         INPUT "Edad del sujeto: ", e                                                            
  8.         WRITE #1, n, e                                                              
  9.     CLOSE #1                                                                                                                                                                                              
  10.                                                                              
  11.     OPEN "I", #1, "C:borra.txt"                                                
  12.         CLS ' borra la pantalla                                                      
  13.                                                                              
  14.         DO WHILE NOT EOF(1)                                                          
  15.             INPUT #1, n, e                                                            
  16.             PRINT n, e                                                                                                                                                                                                
  17.         LOOP                                                                                                                                                  
  18.     CLOSE #1                                                                    
  19. END        
  20.  
  21.  
Nota: las cadenas en el fichero se escriben entrecomilladas, si describimos la edad como entero el resultado es muy parecido pero no está entrecomillado. cuando se escribe a fichero usando Write, separa cada campo mediante comas. esto es así incluso en vb 6.0

243
Visual Basic para principiantes / Re: ¿Como hago un software para cajero?
« en: Miércoles 10 de Junio de 2009, 01:03 »
El código bonito se crea desde el editor , pulsas en el combo que pone code y eliges el lenguaje más adecuado al código que vas a exponer, eso si la indentación debes hacerla manualmente, el 'tag' de code sólo colorea...

Efectivamente la solución es partir desde el billete más alto y descendiendo (de billete en billete  según su valor) restar tantos de ese modelo como pueda contener la cifra restante.
El código se podría hacer más breve si se introducen en matrices y lo pasamos por un bucle do .. while
Usaríamos una estructura sencilla como
Código: vb.net
  1.  
  2. public structure Billetes
  3.      Valor as integer
  4.      Cantidad as integer
  5. end structure
  6. dim Billete(0 to 4 ) as billetes  ' 200, 100, 50, 20, 10
  7.  
  8. private sub load...
  9.     billete(0).valor= 200 : billete(1).valor= 100 ..etc..
  10. end sub
  11.  
  12.  
Billete(0).valor haría referencia al billete de 200  y billete(0).Cantidad los que obtendríamos

Código: vb.net
  1.  
  2. dim cantidad as integer =750
  3. dim b as byte  ' billetes uno a uno
  4. do while cantidad > 10
  5.     billete(b).cantidad= cantidad  billete(b).valor
  6.     cantidad= cantidad mod billete(b).valor
  7.     b= b +1
  8. loop
  9. como no hay billetes de unidadees y si las cantidades no acaban en 0 siempre habrás calderilla (monedas restantes), que puede necesitarse devolver... en una supuesta función.
  10.  
  11.  

244
Visual Basic 6.0 e inferiores / Re: Hilo en VB6
« en: Miércoles 10 de Junio de 2009, 00:29 »
Puedes ser más explícito ?...

Te sigue marcando el error 91  o te sale el msgbox  o... ?

Si el objeto m_background está creado correctamente (no sale el mensaje) entonces lo que falla es el parámetro 'elargumento'. Dado que es un variant, puede contener cualquier cosa, si el error 91 se produce en base a él entonces queda claro que es un objeto, caza dicho parámetro del mismo modo que hemos probado el objeto...
Ten en cuenta que "estadistica" en vb 6.0 es un string, un tipo de variable estandar y en NET un string es un objeto.
Yo cuando utilizo un variant y éste ha de contener indistintamente un variable o un objeto utilizo una propiedad para hacer la asignación adecuada (ahora bien esto funciona perfectamente en VB 6.0, nunca lo he probado con tipos de datos  sobre NET) , de la sigiuente manera:
Código: Visual Basic
  1.  
  2. private p_Argumento as Variant
  3.  
  4. private get property Argumento as Variant   ' si lo que hay almacenado es un objeto la devolución 1ª falla y se produce el 'reintento'
  5.     on local error goto Reintenta
  6.          Argumento= p_Argumento
  7.           exit property
  8.      Reintenta:
  9.          set Argumento = p_Argumento
  10. end property
  11.      private let property Argumento(byref ag as Variant)  ' espera un tipo de datos común, pero si se recibe un objeto, incurre en error y es reasignado desde el 'reintento'.
  12.             on local error goto Reintenta
  13.             p_Argumento= ag
  14.             exit property
  15.      Reintenta:
  16.            set p_Argumento = ag
  17.     end property
  18.         private set property Argumento(byref ag as Variant)  ' se espera un objeto pero si no se recibe, hará un 'reintento'...
  19.             on local error goto Reintenta
  20.             set p_Argumento= ag
  21.             exit property
  22.      Reintenta:
  23.            p_Argumento = ag
  24.         end property
  25.  
  26.  

Ahora tu llamada deberá pasar por esa propiedad.... y la adjudicación deberá hacerse de acuerdo al tipo de datos que espera el objeto  netfx20wrapper.BackgroundWorkerWrapper

Código: Visual Basic
  1.  
  2. Set background = New netfx20wrapper.BackgroundWorkerWrapper
  3.  
  4. on local error goto Reintenta
  5.  
  6.     Argumento= "Estadistica"    ' aquí le decimos que es un tipo de datos genérico
  7.     StartBackground background, Argumento
  8. Reintenta:
  9.   Set Argumento= "Estadistica"    ' aquí le decimos que es un objeto.
  10.   StartBackground background, Argumento
  11.  
  12.  


Ten en cuenta que si espera un objeto (para él el  'backgroundworker' una cadena es un objeto) no puedes pasarle otro tipo de datos si lo haces por referencia. Piensa que NET por defecto recibe parámetros por valor y VB 6.0 lo hace por referencia, asi tu función StartBackground  podría ser llamada directamente como lo tienes 'StartBackground background, "Estadistica"', si en ambas partes recibieras el parámetro por valor.

También como haces un addressof el error podría estar en´el método que hace de colector, 'BackGroundWork' del que no has expuesto nada, y del que suponemos que su firma será similar a:
sub BackGroundWork(byref Parametro as string) .

No obstante recibes un error del tipo ' se espera un objeto... y tu me estás pasando otra cosa...', por lo que se supone que uno de los 2 parámetros que recibe tu función 'StartBackground' es lo que de momento falla (una vez se arregle esto no significa que no se produzca otro error, pero al menos ya habríamos pasado del error 91). Como dices que en el entorno de programación paso a paso funcionaba hemos de suponer que hacía una conversión implícita de la que se ve desprovisto (Just In time) después...


En fin como no especificas nada, la situación se ramifica. Si no aportas detalles en tu respuestas, el diálogo es probable que termine sin apenas haberse establecido.

245
Visual Basic 6.0 e inferiores / Re: Hilo en VB6
« en: Miércoles 10 de Junio de 2009, 00:14 »
Hola.

Yo no veo muy elegante exigir que te responda un experto en un foro donde todo el mundo aporta libremente sus ideas empeñando en ello su tiempo libre. Para poder exigir un experto, creo que lo adecuado es que contrates servicios técnicos, los pagues y ahí exige lo que te dé la gana. Si acudes vía gratuita, no te veo en ningún derecho de exigir otra cosa que sea el que se te trate con respeto. Si las respuestas que la gente te dé no te sirven simplemente la ignoras y listo.

Bueno yendo al tema.
Tu crees que el error está en 'm_background.RunWorkerAsync'  y yo digo que el error está (servido) antes, pero para salir de dudas, cacemos el momento... con un código como este...

' modifica el código como se ilustra.
Código: Visual Basic
  1.  
  2.  
  3. Public Sub StartBackground(background As netfx20wrapper.BackgroundWorkerWrapper, argument As Variant)
  4.     Set m_background = background
  5.  
  6.     if (m_background  is nothing) then
  7.         msgbox 'Mi objeto no ha sido creado... muy a mi pesar."
  8.     else
  9.         m_background.RunWorkerAsync AddressOf BackGroundWork, argument
  10.     end if
  11. End Sub
  12.  
  13.  

Cuando tengamos claro si el objeto se ha creado o no, veremos si con posterioridad tienes algún otro problema...

Aparte de todo esto, puedo preguntarte (y esperar respuesta) a la cuestión: si eres hispanoparlante y el objeto com lo has creado tú, y el usuario final pareces ser tu mismo (no una audiencia angloparlante) podrías decirme por qué usas términos en inglés ?.. de repente has olvidado el español ?. Sólo es curiosidad, si te importuna y no quieres responder no hay menoscabo por ello.

246
Visual Basic para principiantes / Re: ¿Como hago un software para cajero?
« en: Martes 9 de Junio de 2009, 05:56 »
Cita de: "trogua_z"
ayuda si alguien sabe como lograr esto porfavor hagamelo saber, la idea es aprender.

Si la idea realmente es aprender, lo lógico es que llegues hasta donde puedas y donde te quedes atascado es donde pedir ayuda.
Si te quedas atascado sin haber empezado es una clara señal de que no tienes ni idea, entonces la idea no puede ser aprender, sino que te hagan la tarea que te han encargado tus profesores (supongo).

No basta con saber lo que se te explica en clase se requiere un mínimo de sagacidad para saber afrontar un problema, para reducir una pregunta coloquial a pseudocódigo, luego ya será más o menos fácil escribir el código, pero, al menos deberías ser capaz de describir el pseucódigo ...


Olvídate de que se trata de un cajero, porque eso puede asustar, toma otro ejemplo más habitual como el mismo caso: tu familia decide mudarse a otra población. Cada viaje cuesta lo mismo sea el que sea el tamaño de la caja y sólo se puede transportar 1 caja por vez. Para no gastar mucho en el trasporte tu padre quiere embalarlo todo en el menos número de cajas posible, las cajas han de ir completas. Si el  volumen es de 570 y el tamaño de las cajas son 200, 100, 50, 20,10... cómo lo distribuirías para utilizar las menos cajas posibles ?

podrías usar 57 cajas de 10, pero como serían 57 viajes, saldría muy caro...

... entonces que crees tú que habría que hacer para que fuera lo más barato posible y todas las cajas fueran llenas ?...
Planteado así sabrás (supongo) encontrar el algoritmo más óptimo, ya que si no a tu padre le costará más caro la mudanza por tu mala cabeza.
Hale respóndete a ti mismo... y cuando lo hagas nos explicas qué has pensado...

247
Visual Basic para principiantes / Re: Ingresar un numero de 4 cifras
« en: Martes 9 de Junio de 2009, 05:37 »
Mmmm... a medias...

Código: Visual Basic
  1.  
  2.   'Txtnu.MaxLength = 4 ' Esto puedes establecerlo en la interfaz, especialmente si su valor no cambiará...
  3.  Private Sub Txtnu_Validate(Cancel As Boolean)
  4.             Txtnu.Text = Format$(Txtnu.Text, "0###")
  5.        
  6.         ' aquí me refería mas bién (además de darle formato ya que se usa como cifra) a que determines si tiene 4 y ninguna otra cantidad de caracteres
  7.       ' maxlength determina que el usuario sólo pueda introducir comio máximo 4 letras, por tanto aquí atenderemos a que no sean menos de 4, el código sería el siguiente
  8.  
  9.       ' si el texto no tiene los caracteres indicados no se permite al usuario perder el foco del control... date cuenta que previamente lo hemos formateado y además le hemos pedido que a la izquierda incluya ceros si lo precisa.
  10.      if  len(Txtnu.Text ) <> Txtnu.MaxLength then  
  11.              cancel=true
  12.              Cmdver.enabled=false
  13.      else
  14.           Cmdver.enabled= true
  15.      end if
  16.    End Sub
  17.  
  18.  

Por tanto si ya hemos filtrado el texto y estamos seguros que tiene 4 caracteres, dicha comprobación resulta redundante... ya que en el mismo, aseguramos de activar o desactivar el botón. Dicho botón debe estar desactivado al iniciarse la aplicación, sólo cuando se introduzca un texto 'válidado' se activa.

Código: Visual Basic
  1.  
  2.  
  3. Private Sub Cmdver_Click()
  4.     Dim nu As Integer, extre As Integer, cent As Integer, cart As Integer, i As Integer, suma As Integer, extre1 As Integer, extre2 As Integer, total As Integer
  5.  
  6.  ' aquí sobra la comprobación de 4 cifras, ya se hizo en el validate, necesario para poder activar el botón....
  7. nu = Val(Txtnu.Text)
  8.    extre1 = Left(nu, 1)
  9.    extre2 = Right(nu, 1)
  10.    cent = Mid(nu, 2, 2)
  11.  .....  ect...
  12.  
  13.  

248
Cita de: "Jimbenit"
Pero, si no es asi... por que entonces no se produce el desbordamiento en mi pc....?


claro fíjate:
en tú pc
Código: Visual Basic
  1.  
  2. dim x as byte, k as long
  3.  
  4. x= 20
  5. k=2
  6.  
  7. x= x * k
  8.  
  9.  

el el 'otro' pc...
Código: Visual Basic
  1.  
  2. dim x as byte, k as long
  3.  
  4. x= 20
  5. k=200  
  6.  
  7. x= x * k
  8.  
  9.  

Si cambian los datos cambia el resultado, así 20 * 2 no produce desbordamiento pero si 20 * 200.
Para reproducirlo en tu pc debes ingresar los mismos datos que en la 'otra' pc.

Si aún así no se produce un error en tu pc, entonces  debes considerar también, si utilizas datos externos sin considerar configuración regional...  entonces es muy posible que el error venga por un inadecuado uso de datos de acuerdo a la configuración regional.... ya sabes si tengo formato de fecha español: día/mes/año pero en formato inglés mes/día/año
por tanto algo como 20/05/2009 en español (20 de mayo..) sería correcto pero en inglés no (mes 20 día 5...). Lo mismo se aplica a cuestiones como el punto separador de miles y la coma separador de decimales. ...

Si descartas que en tu pc no se reproduce el problema aún ingresando los mismos datos, mira la configuración reguional de tu pc y esa en la que ocurre el problema.

249
Yo creo que sabes lo que es un error de desbordamiento, no ?. Supongo que no hará falta explicártelo.

Tendrás que tomar tu aplicación (el proyecto) ejecutarlo e introducir los mismos valores que te orgininan dicho error para localizar (paso a paso) donde se produce el desbordamiento. Una verz que veas dónde seguramente será bastante obvio el por qué.

Si no fuera obvio es porqué tienes referencias (de tipos de datos) desde otras partes y no te quedan claro cuáles o de qué tipo son.

el error lo puedes reproducir así (vamos que si todavía no sabía lo que es un error de desbordamiento supongo que te quedará claro):

Código: Visual Basic
  1.  
  2. dim x as byte, K as long
  3.  
  4. x=20
  5. k=120
  6. x= x * k ' un byte está limitado entre 0 y 255,  20 * 120 produce por tanto desbordamiento...
  7. k= k * x  ' un long está limitado entre ±2^31 aprox. por tanto no hay desbordamiento
  8.  
  9.  

Como el código está compilado pués es un 'runtime error'. Aquí lo de la instalación es lo de menos,  no se indica un error de problemas de librerías sino de problemas con tus variables.

250
Visual Basic 6.0 e inferiores / Re: Error con LoadPicture
« en: Jueves 4 de Junio de 2009, 22:16 »
Las imágenes que has enviado sugieren que algo ocurre mientras ejecutas el programa, sea tu programa, sea la imagen (que pudiera no ser sólo una imagen) o sea un virus que controla la ejecución de tu programa, lo cierto es que produce un fallo de protección de memoria.

Como dices que ocurre en esa línea y como se supone que la imagen es correcta, queda bastante patente que tu problema es un problema con las librerías si descartamos los virus.

Podría sugerirte que lo ejecutes en un XP para determinar si el problema es inherente al código o sólo al S.O.  (personalmente descarto que sea un problema de VB)... al menos sabrás que si el problema sólo te ocurre en win98 podrás descartar cosas...

Páginas: 1 ... 8 9 [10] 11 12 ... 29