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 - Spider-Net

#1021
Aprende a leer por donde va el tema capullo:

Citarsiguen funcionando pero se quedan bloqueados

Estabamos hablando del uso de DoEvents aprende a leer con atención un Post, no funciona el uso de DoEvents para que el programa no pete, eso no quiere decir que el programa no funcione, que pasa que no sabes leer? el programa SIGUE FUNCIONANDO pero se cuelga la interface,sabes leer???? o no sabes leer?????

Valiente estúpidos subidos hay por aquí... xDDDD

Lo que hay que leer...

Citark te den ... xD
No, que eso es lo que te gusta  ;)
#1022
Pues usas unsigned long double que almacena bastante más pero siempre habrá un límite, si quieres cálculos más grandes aún que eso pues a separar en potencias más pequeñas y demás... eso tiene ya más complicación.
#1023
Y dónde pone que no funcione????

No sé por que antes de postear no lee la gente. Donde pone que no funcione?????
Lo que llevamos discutiendo es que el programa se peta por el bucle infinito. Aquí no eres el único que ha creado bucles Hans el Topo, nadie niega que los haga o que los hagas  bien por supuesto que sí y funcionarán, pero este programa crea un bucle infinito que peta el programa. Creo que lo dejé claro desde mi primera respuesta a este post que si funciona el programa, que yo tengo una igual pero que la interface se peta, se pone la pantalla en blanco y no ves los botones ni nada, sigue funcionando claro pero se peta el programa, dime como harías si el programa tuviese más funciones y tuvieses que ejecutarlas? si está la interface en "No Responde"

Haber si ahora me han entendido, y me dicen una forma para evitar esto que yo no lo conseguí y con DoEvents no va ni con Waits....

Saludos.
#1024
Para eso estamos, para ayudarnos unos a otros.

De los errores se aprende  ;) ;)
#1025
Claro amigo mío,si no reinicias la variable... siempre valdrá 4 y siempre saldrá el mensaje...

Qué tal si pruebas a reiniciar la variable?

Código (vb) [Seleccionar]
Private Declare Function GetAsyncKeyState Lib "user32" _
    (ByVal vKey As Long) As Integer
   
  Dim num(1 To 3) As Integer

   
Private Sub Timer1_Timer()

On Error Resume Next
Dim keystate As Long
keystate = GetAsyncKeyState(vbKey1)
If (keystate And &H1) = &H1 Then
num(1) = num(1) + 1
End If
keystate = GetAsyncKeyState(vbKey2)
If (keystate And &H1) = &H1 Then
num(2) = num(2) + 1
End If
keystate = GetAsyncKeyState(vbKey3)
If (keystate And &H1) = &H1 Then
num(3) = num(3) + 1
End If
'Y así con todas las teclas que quieras y luego puedes hacer un if más para ejecutar 'el mensaje.
If num(1) = 4 Then
MsgBox "el numero " & num(1)  & "  se pulso 4 veces ya"
num(1)=0
End If
End Sub


Muy fácil.. creo que eso solucionará tu problema.

Saludos
#1026
Esto lo pones arriba del todo en las declaraciones de tu Form

Private Declare Function Getasynckeystate Lib "user32" Alias "GetAsyncKeyState" (ByVal VKEY As Long) As Integer

Luego crea un timer con un Intervalo de 1 y el código del timer te quedaría así:

Código (vb) [Seleccionar]
Private Sub Timer1_Timer()
On Error Resume Next
Dim keystate As Long

keystate = Getasynckeystate(vbKey1)
If (keystate And &H1) = &H1 Then
   MsgBox "lo que quieras mostrar"
End If
End Sub


Lo que tú tienes que hacer es cambiar en la variable la parte de vbKey1 por la tecla que quieras. La tecla dos sería vbKey2, la 3 vbKey3 y así sucesivamente... sino encuentras alguna tecla puedes usar su valor ascii que lo puedes encontrar fácilmente en google.

Tú para hacer lo mismo que ese código que has puesto deberías de poner un keystate para cada tecla...

Código (vb) [Seleccionar]
Private Sub Timer1_Timer()
On Error Resume Next
Dim keystate As Long

keystate = Getasynckeystate(vbKey1)
If (keystate And &H1) = &H1 Then
   num(1)=num(1)+1
End If

keystate = Getasynckeystate(vbKey2)
If (keystate And &H1) = &H1 Then
   num(2)=num(2)+1
End If


keystate = Getasynckeystate(vbKey3)
If (keystate And &H1) = &H1 Then
   num(3)=num(3)+1
End If

.
.
.
'Y así con todas las teclas que quieras y luego puedes hacer un if más para ejecutar 'el mensaje.
  If num(x) = 4 Then
    msgbox "el numero " & x & "  se pulso 4 veces ya"   
    End If
End Sub


Sólo tienes que adaptarlo a lo que tú quieras hacer, es fácil, espero que te haya aclarado las dudas.

Saludos
#1027
 :huh: :huh:

Private Sub Form_Load()
Dim x As Double
x = 2 ^ 2
MsgBox x
End Sub

Pues a mi me funciona así perfectamente, lo puso por probar de ejemplo y a mí al menos se me ejecuta bien, sino puedes crear una variable potencia que se inicie con el valor 1 y se multiplique por si misma el número de veces que sea el exponente, es fácil de hacer en un For, no creo que tengas problemas.
#1028
Lo puedes hacer también desde Visual Basic directamente sin usar la Shell. Primero tienes que borrar todos los archivos del directorio para poder borrar el directorio, sería algo así:


Public Sub Borrar()
On Error Resume Next
directorio = "C:\Ejemplo"
Kill directorio & "\*.*"
RmDir directorio
End Sub

Como dijo zXxOsirisxXz creo que sólo funcionaría si el directorio está vacío, cosa poco probable por lo que hay que eliminar antes el contenido que lo puedes hacer con esa pequeña función.
De todas formas si dentro de la carpeta Ejemplo existen más subcarpetas creo que ninguno de los métodos funcionaría así que deberías de eliminar todos los archivos y además todas las subcarpetas de tu directorio, así luego si te permitiría borrarlo.
Creo que es así..

Saludos.
#1029
Normalmente siempre el array empieza por 0 a no ser que tu lo fuerces a empezar por otro número.

Saludos  ;)
#1030
Supongo que entonces tienes un array de sockets, indica el número (Index) del Socket y ya está, por ejemplo:

Winsock(1).SendData...

o bien

Winsock(2).SendData...

Dependiendo de a que servidor quieres enviar los datos.

Saludos.