Autor
|
Tema: [Reto] IsHour (Leído 8,782 veces)
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Usando el mismo estilo de prueba que use en IsDate === Reto IsHour ==== 09-15-2011 18:41:27
Testeo de calidad ============================== 00:00:00 Psyke1 FAILS
Testeo de falsos ============================== 5:59:59 Psyke1 FAILS
Testeo de velocidades ============================== 300000 vueltas
413,168 msec BlackZeroX 1.198,057 msec Psyke1 572,217 msec Psyke14 215,601 msec raul338
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
¿Ahora mejor? Sigue igual... ya que para sumar un numero a un valor guardado en una string se recurre al BadTypeConvert/EvilTypeConvert, lo digo solo por que a simple vista un "Novato/Intermedio" puede confundirse un poco y por eso no me gusta, no se digiere rapido, aun asi genial funcion!¡. P.D.: Sigues en CrazedCountryRebels?, estuve en españa hace 1 mes (vacaciones) y busque ese restaurante o lo que sea no lo haye jajaja... si era españa vdd? Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
@BlackZeroAhh, ok, te lo había copiado de un código tuyo de no sé donde... Viniste a España y no me avisas. Sí, sigo en el grupo, sé que no es muy metal para ti, pero bueno... @raulGracias, corregida... Que listo, justo pruebas con mis funciones lentas... Si probamos con mi función más rápida IsHour_Psyke12 las cosas cambian. Option Explicit Private Declare Sub RtlMoveMemory Lib "kernel32" (ByVal pDst As Long, ByVal pSrc As Long, ByVal ByteLen As Long) Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load() Dim t As New CTiming, c As New Class1, i&, r&, a$(), b As Boolean
Me.AutoRedraw = True a() = Split("34:23:45 5:59:59 10:45:67 raulfeo 00:00:00 14:57:79 111:23:4", " ") t.Reset For i = 0 To 200000 For r = 0 To 6 b = IsHour_r338(a(r)) Next Next Me.Print t.sElapsed, "raul338" Sleep 1000 t.Reset For i = 0 To 200000 For r = 0 To 6 b = isHour_BlackZX(a(r)) Next Next Me.Print t.sElapsed, "Black" Sleep 1000 t.Reset For i = 0 To 200000 For r = 0 To 6 b = c.IsHour_Psyke12(a(r)) Next Next Me.Print t.sElapsed, , "Psyke13"
Set c = Nothing Set t = Nothing End Sub Resultado: DoEvents!
|
|
« Última modificación: 16 Septiembre 2011, 14:15 pm por Psyke1 »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
@ A mi criterio ni la de Raul338 ni la mia son legiles (me tarde un poco en entender la de Raul338, mas que nada como comprobaba los rangos, ya que esta dispersa esa region)... y la mia esta un poco ofuscada... mas aun sin comentarios, almenos que seas yo . Para mi la funcion mas rapida y legible es la de IsHour_Psyke12, no tengo que comprobarla para saber eso. Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Elemental Code
Desconectado
Mensajes: 622
Im beyond the system
|
[Rustic]Public Function eCode(ByRef Time As String) As Boolean On Error GoTo Fallo If Len(Time) <> 8 Then Exit Function Dim sTime() As String sTime = Split(Time, ":") If CLng(sTime(0)) >= 0 And CLng(sTime(0)) <= 23 And _ CLng(sTime(1)) >= 0 And CLng(sTime(1)) <= 59 And _ CLng(sTime(2)) >= 0 And CLng(sTime(2)) <= 59 Then eCode = True Fallo: End Function
[/Rustic]
|
|
|
En línea
|
I CODE FOR $$$ Programo por $$$ Hago tareas, trabajos para la facultad, lo que sea en VB6.0 Mis programas
|
|
|
Sanlegas
Desconectado
Mensajes: 131
https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-
|
Bueno aqui el mio... Public Function IsHour(ByRef Expresion As String) As Boolean Dim C() As Byte Dim L As Integer Dim P As Integer Dim F As Boolean L = Len(Expresion) If (L And &H8) Then L = (L - &H8) If (L Or &H0) = &H0 Then C = StrConv(Expresion, vbFromUnicode) P = &H2 Sig0: L = C(P) If (L And &H20) Then L = (L - &H20) If (L And &H10) Then L = (L - &H10) If (L And &H8) Then L = (L - &H8) If (L And &H2) Then L = (L - &H2) If (L Or &H0) = &H0 Then If (P And &H4) Then GoTo Sig Else P = &H5 GoTo Sig0 End If End If End If End If End If End If Exit Function Sig: L = C(0) L = (L - &H33) If (L And &H40) Then L = (C(0) - &H30) If (L And &H40) Then Exit Function Else If (L And &H2) Then F = True GoTo Sig2 End If End If Exit Function Sig2: L = C(1) L = (L - &H3A) If (L And &H40) Then L = (-&HB - L) If (L And &H10) Then L = ((Not L) - &H4) If (L And &H4) Then GoTo Sig3 Else If Not F Then GoTo Sig3 End If End If End If Exit Function Sig3: P = &H3 Sig4: L = C(P) L = (L - &H36) If (L And &H40) Then L = (-L - &H7) If (L And &H8) Then P = (P + &H3) If (P And &H8) Then P = &H4 GoTo Sig5 Else GoTo Sig4 End If End If End If Exit Function Sig5: L = C(P) L = (L - &H3A) If (L And &H40) Then L = (-L - &HB) If (L And &H10) Then P = (P + &H3) If (P And &H8) Then IsHour = True Else GoTo Sig5 End If End If End If End If End Function
Alguien puede subir el proyecto completo del reto?, salu2 !
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
@BlackZeroAhh, ok, te lo había copiado de un código tuyo de no sé donde... lo se pero yo lo hacia de la manera (Solo en/para numeros). TipoNumerico1 = (TipoNumerico1.2 + TipoNumerico2) Donde: TipoNumerico1.2 es del mismo tipo que TipoNumerico1 pero con valor 0... y el tipo resultante sera del tipo TipoNumerico1.2, mas no del TipoNumerico2... ej.: dim lVal as long dim bVal as byte lval = (&H0 + bVal)
y tu lo haces de una manera un poco mas ofuscada... ya que como sabras si pones dim lVal as long Const VAL as string = "10" VAL lval = (&H0 + VAL) ' // mas no (VAL + &H0)
Realizara su trabajo, pero le das mas trabajo independiente a el lenguaje y sabra solo el que resultados salgan... ya que como sabras "10" se deberia transformar a un valor de tipo numerico (Lo que yo hago en mi codigo y que seguro Raul338 me copio.. na no te creas es un gran programador )
|
|
« Última modificación: 18 Septiembre 2011, 03:01 am por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Reto ;)
Ingeniería Inversa
|
NeoKiller
|
3
|
3,233
|
15 Agosto 2004, 23:12 pm
por NeoKiller
|
|
|
Reto!!
Ingeniería Inversa
|
HaCkZaTaN
|
2
|
3,249
|
10 Septiembre 2004, 09:30 am
por Ðevastador
|
|
|
Reto vB
Ingeniería Inversa
|
nhouse
|
2
|
3,738
|
16 Marzo 2005, 09:41 am
por 4rS3NI(
|
|
|
reto en VB6
Ingeniería Inversa
|
ellolo
|
1
|
2,844
|
15 Abril 2005, 10:03 am
por UnpaCker!
|
|
|
Un reto !!!
« 1 2 3 »
Programación Visual Basic
|
VirucKingX
|
24
|
9,313
|
8 Mayo 2006, 23:36 pm
por Kizar
|
|