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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6
21  Programación / Programación Visual Basic / Re: Registro De Hotel VB6 en: 10 Junio 2015, 20:00 pm
Pues es bastante simple, pero tienes que usar variables de tipo Date o al menos de tipo String para guardar el valor.

Código
  1.  Dim Dia1 As String
  2.  Dia1 = "06/06/2015" ' fecha de entrada guardada
  3.  MsgBox DateDiff("d", CDate(Dia1), DTPicker1.Value)  ' diferencia con la fecha actual
  4.  

 ;)

Saludos
22  Programación / Programación Visual Basic / Re: Registro De Hotel VB6 en: 10 Junio 2015, 10:29 am
Esta vez vas a tener que pensar mas :D
Cuando entras al hotel guardas la fecha en una variable mirando el valor del DTPcker ese.
Cuando sales comparas la fecha actual con la guardada.
Para compararla te puede servir el comando datediff. Investiga un poco. Usa "San Google" :D

Saludos
23  Programación / Programación Visual Basic / Re: Funcíon siendo detecta por los antivirus en: 9 Junio 2015, 12:47 pm
Puedes intentar modificar un poco la funcion.
A mi a veces me pasa tambien eso y mira que j.de.

Aqui te dejo tu funcion "traducida" y con un par de lineas cambiadas de posicion.
Quiza te valga, aunque no responde igual que Split con caracteres ASCII extendido.

Código
  1. Private Function Separa(ByVal Cadena As String, Optional ByVal Separador As String, Optional ByVal Limite As Long = -1) As String()
  2.  
  3.  Dim SiguienteCaracter As Long, PosSeparador As Long, LenCadena As Long, LenSeparador As Long, Contador As Long, MatrizAcumulador() As String
  4.  
  5.  LenCadena = Len(Cadena)
  6.  If LenCadena = 0 Then GoTo QuitHere
  7.  If Separador = vbNullString Then Separador = " "
  8.  If Limite = 0 Then GoTo QuitHere
  9.  If InStr(1, Cadena, Separador, vbBinaryCompare) = 0 Then GoTo QuitHere
  10.  
  11.  
  12.  LenSeparador = Len(Separador)
  13.  
  14.  ReDim MatrizAcumulador(0)
  15.  SiguienteCaracter = 1
  16.  PosSeparador = 1
  17.  
  18.  Do
  19.    If Contador + 1 = Limite Then
  20.      MatrizAcumulador(Contador) = Mid$(Cadena, SiguienteCaracter)
  21.      Exit Do
  22.    End If
  23.  
  24.    PosSeparador = InStr(PosSeparador, Cadena, Separador, vbBinaryCompare)
  25.  
  26.    If PosSeparador = 0 Then
  27.      If Not SiguienteCaracter = LenCadena Then
  28.        MatrizAcumulador(Contador) = Mid$(Cadena, SiguienteCaracter)
  29.      End If
  30.      Exit Do
  31.    End If
  32.  
  33.    MatrizAcumulador(Contador) = Mid$(Cadena, SiguienteCaracter, PosSeparador - SiguienteCaracter)
  34.    Contador = Contador + 1
  35.  
  36.    ReDim Preserve MatrizAcumulador(Contador)
  37.  
  38.    SiguienteCaracter = PosSeparador + LenSeparador
  39.    PosSeparador = SiguienteCaracter
  40.  Loop
  41.  
  42.  ReDim Preserve MatrizAcumulador(Contador)
  43.  Separa = MatrizAcumulador
  44.  
  45.  Exit Function
  46.  
  47. QuitHere:
  48.  ReDim Separa(-1 To -1)
  49.  
  50. End Function

Yo me he estado dejando un poco el seso y te he hecho esta otra, que aunque tarda 3 veces mas que la tuya, en miles y miles de pruebas aleatorias me ha dado el mismo resultado que Split.

Que la disfruteis:

Código
  1. Private Function Separa3(ByVal Cadena As String, ByVal Separador As String, Optional ByVal Limite As Long = -1) As String()
  2.  Dim Contador As Long
  3.  Dim ContadorB As Long
  4.  Dim F As Long
  5.  Dim F2 As Long
  6.  Dim Chr0 As Long
  7.  Dim Matriz() As String
  8.  Dim MatrizB() As Byte
  9.  Dim CadenaB() As Byte
  10.  Dim SeparadorB() As Byte
  11.  Dim LenSepB As Long
  12.  Dim LenCadenaB As Long
  13.  
  14.  ' EL ORDEN DE ESTAS COMPARACIONES ES IMPORTANTE
  15.  ' PARA OBTENER EL MISMO RESULTADO QUE SPLIT
  16.  ' PERO MUY, MUY IMPORTANTE :P
  17.  LenCadenaB = LenB(Cadena)
  18.  If Separador = "" Then GoTo Error2 ' si no hay separador se devuelve hasta un chr(0)
  19.  If Limite = 0 Then GoTo Error1 ' si limite es 0 se devuelve vacia
  20.  If LenCadenaB = 0 Then GoTo Error1 ' si no hay cadena se devuelve vacia
  21.  If Limite = 1 Then GoTo Error3 ' si limite es 1 se devuelve todo en una matriz con 1 elemento
  22.  If InStr(1, Cadena, Separador, vbBinaryCompare) = 0 Then GoTo Error3
  23.  'si no se encuentra el separador se devuelve una matriz de 1 solo elemento con todo
  24.  
  25.  CadenaB = Cadena
  26.  
  27.  SeparadorB = Separador
  28.  LenSepB = LenB(Separador)
  29.  
  30.  Contador = -1 ' este controla los elementos de Matriz
  31.  ContadorB = 1 ' este controla los elementos de MatrizB
  32.  
  33.  For F = 0 To LenCadenaB - 1 Step 2 ' vamos eligiendo cada caracter
  34.  
  35.    If F + LenSepB <= LenCadenaB Then ' si cabe un separador miramos si lo hay
  36.      For F2 = 0 To LenSepB - 1 Step 2
  37.        If CadenaB(F + F2) <> SeparadorB(F2) Then
  38.          Exit For ' no lo hay
  39.  
  40.        ElseIf CadenaB(F + F2 + 1) <> SeparadorB(F2 + 1) Then
  41.          Exit For ' no lo hay
  42.  
  43.        End If
  44.      Next F2
  45.  
  46.    Else
  47.  
  48.      ' si no cabe el separador, no hay separador. marcamos F2
  49.      F2 = 0
  50.  
  51.    End If
  52.  
  53.    If F2 < LenSepB - 1 Then
  54.    ' si no habia separador guardamos el byte
  55.      ReDim Preserve MatrizB(ContadorB)
  56.      MatrizB(ContadorB - 1) = CadenaB(F)
  57.      MatrizB(ContadorB) = CadenaB(F + 1)
  58.      ContadorB = ContadorB + 2
  59.  
  60.    Else
  61.    ' si habia separador
  62.  
  63.      If Contador + 1 <> Limite Then
  64.      ' si no hemos llegado al limite
  65.        F = F + LenSepB - 2 ' apuntamos mas alla del separador
  66.        Contador = Contador + 1 ' creamos un nuevo elemento y guardamos lo extraido
  67.        ReDim Preserve Matriz(Contador)
  68.        If ContadorB > 1 Then Matriz(Contador) = MatrizB
  69.        ContadorB = 1 ' inicializamos la matrizb
  70.        ReDim MatrizB(1)
  71.      Else
  72.      ' si hemos llegado al limite salimos
  73.        Exit For
  74.      End If
  75.  
  76.    End If
  77.  Next F
  78.  
  79.  If (Contador + 1 = Limite) Then
  80.    ' si estamos en el limite
  81.  
  82.    If F = LenCadenaB Then
  83.     ' si hemos procesado toda la cadena, es que no habia
  84.     ' separador y tenemos todo en matrizb, asi que lo
  85.     ' guardamos en este ultimo elemento
  86.      If ContadorB > 1 Then ' aun asi, el separador puede ser el ultimo caracter
  87.        Matriz(Contador) = Matriz(Contador) & Separador & CStr(MatrizB)
  88.      Else
  89.        Matriz(Contador) = Matriz(Contador) & Separador
  90.      End If
  91.  
  92.    Else
  93.      ' si aun quedan caracteres es que habia separador
  94.      ' hay que sacar los que quedan e incluir el separador
  95.      For F2 = F To LenCadenaB - 1 Step 2
  96.        ReDim Preserve MatrizB(ContadorB)
  97.        MatrizB(ContadorB - 1) = CadenaB(F2)
  98.        MatrizB(ContadorB) = CadenaB(F2 + 1)
  99.        ContadorB = ContadorB + 2
  100.      Next F2
  101.      Matriz(Contador) = Matriz(Contador) & Separador & CStr(MatrizB)
  102.  
  103.    End If
  104.  
  105.  Else
  106.    ' si quedan casillas creamos una nueva
  107.    Contador = Contador + 1
  108.    ReDim Preserve Matriz(Contador)
  109.    ' si hay algo en matrizb lo guardamos
  110.    If ContadorB > 2 Then Matriz(Contador) = MatrizB
  111.  
  112.  End If
  113.  
  114.  Separa3 = Matriz  ' y devolvemos la matriz
  115.  
  116.  GoTo FinFunction
  117.  
  118. Error1:
  119.  ReDim Separa3(-1 To -1) ' aqui devolvemos la matriz vacia
  120.  GoTo FinFunction
  121.  
  122. Error2:
  123.  ' si no hay separador, Split usa chr(0) como fin de cadena.
  124.  ' si no lo encuentra devuelve toda la cadena.
  125.  Chr0 = InStr(1, Cadena, Chr(0))
  126.  If Chr0 <> 0 Then
  127.    Cadena = Left$(Cadena, Chr0 - 1)
  128.  End If
  129.  
  130. Error3:
  131.  ' aqui la devolvemos en un solo elemento
  132.  ReDim Matriz(0)
  133.  Matriz(0) = Cadena
  134.  Separa3 = Matriz
  135.  
  136. FinFunction:
  137.  
  138. End Function

Saludos

EDITO:
Parece que me falto probar sin separador y si no lo hay no da el mismo resultado que Split.
Depurando.....

EDITO2:
Arreglado, (o eso creo). Espero que vaya bien, porque no pienso volver a revisarla.
La he probado con valores aleatorios y nulos para cadena, separador y limite.
Os dejo los comentarios que he ido escribiendo para que los mas nuevos se enteren de algo.

EDITO3:
Dios mio, porque lo he vuelto a revisar.
Por no hacer un Randomize, parece ser que las pruebas no eran del todo aleatorias.
Resulta que hay al menos 1 excepcion (que investigare), y es que si el caracter separador es el Chr(7) si que falla. Devuelve diferente resultado que la funcion Split.
Vere si lo arreglo. Si no, a mi ya me parece bastante bueno  :rolleyes:

Y SIGO EDITANDO:
El problema es el limite. Parece que si hay limite falla. No se que m,, de pruebas aleatorias he hecho :P
El caracter 7 me salia como separador siempre con limite 2, asi que siempre fallaba. Por lo visto como tenia un margen muy grande para limite, con los demas caracteres no llegaba al limite.
Seguire depurando a ver. Es mas complicado de lo que parece  :-\

OTRA VEZ AQUI:
Listo, ya funciona (otra vez). Solo habia un par de calculos que habia deducido mal. Volveré cuando vea que lo he estado probando todo el rato con la misma cadena o vete a saber :D

Y OTRA VEZ:
Ya lo adverti. Ahora habia olvidado probar con cadenas vacias (creo) y con separadores que no existieran en la cadena. Ademas la funcion Split es muy suya y cuesta descubrir como va a decidir devolverte el resultado con parametros no validos.

En fin, las pruebas "aleatorias" dicen que ya funciona bien, y yo ya estoy cansado de hacer pruebas :P

Si encontrais errores comentadmelo.

Saludos
24  Programación / Programación Visual Basic / Re: Duda Sobre Combo Box VB6 en: 6 Junio 2015, 22:49 pm
Te saldran siempre los mismos precios.
Tienes que poner otra comparacion
Código
  1. Private Sub Combo3_Click()
  2. If Combo3.Text = "2013" Then
  3.  If Combo2.Text = "Accord" Then
  4.    lblUS = "28,900"
  5.  ElseIf Combo2.Text = "Civic" Then
  6.    lblUS = "xx,xxx"
  7.  End If
  8. ElseIf Combo3.Text = "2014" Then
  9.  If Combo2.Text = "Accord" Then
  10.    lblUS = "32,000"
  11.  ElseIf Combo2.Text = "Civic" Then
  12.    lblUS = "xx,xxx"
  13.  End If
  14. Elseif...
etc...
25  Programación / Programación Visual Basic / Re: Duda Sobre Combo Box VB6 en: 6 Junio 2015, 10:52 am
Vas bien, pero en lugar de asignar valores al combo.text tienes que:

Vaciar el combo con combo.clear

Añadir los elementos con combo.add (o combo.additem no me acuerdo) segun sea la marca.

Saludos
26  Programación / Programación Visual Basic / Re: Alguien Me Ayudar ! Con el Form.hide en: 5 Junio 2015, 10:25 am
Estas usando mal el label. No puedes preguntar si un label es true o false.
No deberia pasar de esa linea sin dar error.

Pon un breakpoint al comienzo de esa sub y, cuando se pare, sigue el proceso paso a paso con F8.
Asi podras ver donde se muestra el form.

Es muy probable que al generarse el error del label el programa salte al ultimo error controlado y este esté en el form2.

Con F8 lo descubriras.

Suerte
27  Programación / Programación Visual Basic / Re: Saber si el disco duro esta inactivo o no en: 4 Junio 2015, 10:26 am
Yo tengo un problema parecido. Tengo un disco que de vez en cuando se activa y pega unos latigazos que no me gustan nada. Como casi no lo uso lo apago usando el programa revoSleep, y cuando realmente lo quiero usar lo reactivo.
No me gusta demasiado la solución, ademas de que el programa es algo chapuza, pero normalmente me paso todo el día sin reactivarlo, asi que creo que sufrirá menos que dando latigazos cada x tiempo.
Si usas Win7 y quieres usarlo, ejecútalo como Administrador o no podrá manipular los discos.

Saludos

28  Programación / Programación Visual Basic / Re: Tasa en Visual Basic PorFavor en: 4 Junio 2015, 10:21 am
No se a que te refieres que quieres hacer, puesto que ya conoces el FormatCurrency.
Por si acaso, aqui he dejado una descripcion del comando:
http://foro.elhacker.net/programacion_visual_basic/pregunta_simple-t436432.0.html

Saludos
29  Programación / Programación Visual Basic / Re: Pregunta Simple en: 4 Junio 2015, 10:14 am
Aqui lo tienes para vb6:
http://www.vb-helper.com/howto_formatcurrency.html

Una pequeña traduccion Google y algo de explicacion:

    FormatCurrency(expression _
        [, digits_after_decimal] _
        [, include_leading_zero] _
        [, use_parens_if_negative] _
        [, groups_digits] )


Parametros:

expression
expresión numérica

digits_after_decimal
El número de dígitos a mostrar después del punto decimal

include_leading_zero
Si el número es menor que 1 y mayor que -1, determina si el número debe tener un 0 antes del punto decimal.

use_parens_if_negative
Determina si los números negativos están rodeados con paréntesis en lugar de utilizar un signo menos.

groups_digits
Determina si los dígitos a la izquierda del punto decimal se agrupan con separadores de miles (comas en los Estados Unidos).

Ejemplos:

Resultado = FormatCurrency(1.23456, 2) ' devuelve $1.23 con solo 2 decimales

Resultado = FormatCurrency(0.123456, 2, vbFalse) ' devuelve $.12 sin cero a la izquierda

Resultado = FormatCurrency(0.123456, 2, vbTrue)  ' devuelve $0.12 con cero a la izquierda

Resultado = FormatCurrency(-12345.12, , vbFalse) 'devuelve $-12,345.12  valores negativos con signo -

Resultado = FormatCurrency(-12345.12, , vbTrue) 'devuelve ($12,345.12)  valores negativos entre parentesis

Resultado = FormatCurrency(-12345.12, , vbTrue, vbFalse) 'devuelve ($12345.12) sin separadores de millar

Saludos
30  Programación / Programación Visual Basic / Re: Valor medio,AYUDA en: 4 Junio 2015, 09:43 am
Es simple. Suponiendo que tu listbox se llame List1:
Creas un bucle For Next de 0 a List1.ListCount-1
Vas sumando todos los valores que vaya adquiriendo List1.List(contadordelbucle) y cuando acabe el bucle divides el resultado entre List1.ListCount.
Intenta hacerlo y pregunta si tienes dudas.

Saludos
Páginas: 1 2 [3] 4 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines