Autor
|
Tema: [RETO] CompWordsAlphabetically (Leído 10,016 veces)
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Che Fran, me parece a mi o haces un tipo de trampa? xD es decir q es eso de dividir entre 2 xD? @Karcrack fijate con esto a ver si anda tu funcion.. Private Sub Form_Load()
Debug.Print kCompare("elfo", "elefante") Debug.Print kCompare("ave", "zorro") Debug.Print kCompare("hola", "") Debug.Print kCompare("zero", "zerocool") Debug.Print kCompare("feo", " ") Debug.Print kCompare("frog", "frog") Debug.Print kCompare("faso", "fasa") Debug.Print kCompare("JOJO", "jojo") End Sub
|
|
« Última modificación: 11 Marzo 2011, 16:51 pm por XXX-ZERO-XXX »
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Che * Fran , me parece a mi o haces un tipo de trampa? xD es decir q es eso de dividir entre 2 xD? *Nick PLZ... Nah, no es trampa el tema es que lenb devuelve el espacio en memoria que es igual a el doble de caracteres. GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
@79137913:Reparado, habia un problema con la comprobación de tamaños
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
If (Not Not b) = False Then ReDim b(-1 To 1) b(-1) = 1 b(1) = 2 b(0) = 3 End If
Porque esa comprobacion? No es que ese array ya tiene algo :-/ lo inicializas de una y listo , o sino mas facil con Choose (aunque no se si mas rapido )
|
|
|
En línea
|
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Ah claro, ya entendi xD
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
@raul338:Lo que hace esa linea If (Not Not b) = False Then es comprobar si el array ha sido rellenado... si no lo rellenará... No lo hago ni con un Choose() ni rellenando siempre el array por cuestión de velocidad.
|
|
|
En línea
|
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Tramposo, no sabia que se podian hacer funciones estaticas Dije al principio que valía todo... ATENCIÓN : No tiene porque devolver los números del primer post!!! Aquí dejo la mía: Option Explicit Option Compare Text Private Declare Function lstrcmpW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long ' -1 > Error ' 1 > Iguales ' 0 > primera palabra ' 2 > segunda palabra Public Static Function CompareMrFrog(ByRef strWord1$, ByRef strWord2$) As Long If LenB(strWord1) = 0 Or LenB(strWord2) = 0 Then CompareMrFrog = -1 Exit Function End If If strWord1 = strWord2 Then CompareMrFrog = 1 Exit Function End If CompareMrFrog = lstrcmpW(StrPtr(strWord1), StrPtr(strWord2)) + 1 End Function
@Karcrack DoEvents!
|
|
« Última modificación: 12 Marzo 2011, 14:52 pm por Mr.Frog™ »
|
En línea
|
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Jajajajaja Si te fijas, en ningún momento dije que debia que devolver esos números... Tu función devuelve un resultado erróneo aquí: Debug.Print kCompare("feo", " ") Debería devolver la segunda y devuelve la primera... Ahora dejo mi versión 2: Option Explicit Option Base 0 Private Declare Sub PutMem4 Lib "msvbvm60.dll" (ByVal Ptr As Long, ByVal Value As Long) Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long Private Declare Function IsCharUpperW Lib "user32.dll" (ByVal lngChar As Long) As Long Private lngAscHeader1&(5), lngAscHeader2&(5) Private intAsc1%(), intAsc2%() ' 0 -> Error ' 1 -> First Word ' 2 -> Equal ' 3 -> Secon Word Friend Static Function Compare(ByRef strWord1$, ByRef strWord2$) As Long Dim Q&, L& L = LenB(strWord1) \ 2 If L = 0 Or LenB(strWord2) = 0 Then Exit Function lngAscHeader1(3) = StrPtr(strWord1) lngAscHeader2(3) = StrPtr(strWord2) For Q = 0 To L If IsCharUpperW(intAsc1(Q)) Then intAsc1(Q) = intAsc1(Q) + 32 End If If IsCharUpperW(intAsc2(Q)) Then intAsc2(Q) = intAsc2(Q) + 32 End If If intAsc2(Q) > intAsc1(Q) Then Compare = 1 Exit Function ElseIf intAsc2(Q) < intAsc1(Q) Then Compare = 3 Exit Function ElseIf Q = L Then Compare = 2 Exit Function End If Next Q End Function Private Sub Class_Initialize() lngAscHeader1(0) = &H1& lngAscHeader1(1) = &H2& lngAscHeader1(4) = &H7FFFFFFF PutMem4 VarPtrArray(intAsc1), VarPtr(lngAscHeader1(0)) lngAscHeader2(0) = &H1& lngAscHeader2(1) = &H2& lngAscHeader2(4) = &H7FFFFFFF PutMem4 VarPtrArray(intAsc2), VarPtr(lngAscHeader2(0)) End Sub Private Sub Class_Terminate() PutMem4 VarPtrArray(intAsc1), 0& PutMem4 VarPtrArray(intAsc2), 0& End Sub
Ejemplos: Private Sub Form_Load() Dim c As New Class1 Debug.Print "---------------------------------------------" Debug.Print c.Compare("rana", "") Debug.Print c.Compare("hola", "holas") Debug.Print c.Compare("bienvenido", "bienvenida") Debug.Print c.Compare("Ejemplo", "eJempLIficar") Debug.Print c.Compare("igual", "igual") Debug.Print c.Compare("PaLaBrA", "palabra") Debug.Print "---------------------------------------------" Debug.Print c.Compare("elfo", "elefante") Debug.Print c.Compare("ave", "zorro") Debug.Print c.Compare("hola", "") Debug.Print c.Compare("zero", "zerocool") Debug.Print c.Compare("feo", " ") Debug.Print c.Compare("frog", "frog") Debug.Print c.Compare("faso", "fasa") Debug.Print c.Compare("JOJO", "jojo") End Sub
Resultado: --------------------------------------------- 0 1 3 3 2 2 --------------------------------------------- 3 1 0 1 3 2 3 2 DoEvents!
|
|
« Última modificación: 12 Marzo 2011, 15:46 pm por Mr.Frog™ »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Reto ;)
Ingeniería Inversa
|
NeoKiller
|
3
|
3,201
|
15 Agosto 2004, 23:12 pm
por NeoKiller
|
|
|
Reto!!
Ingeniería Inversa
|
HaCkZaTaN
|
2
|
3,215
|
10 Septiembre 2004, 09:30 am
por Ðevastador
|
|
|
Reto vB
Ingeniería Inversa
|
nhouse
|
2
|
3,708
|
16 Marzo 2005, 09:41 am
por 4rS3NI(
|
|
|
reto en VB6
Ingeniería Inversa
|
ellolo
|
1
|
2,823
|
15 Abril 2005, 10:03 am
por UnpaCker!
|
|
|
Un reto !!!
« 1 2 3 »
Programación Visual Basic
|
VirucKingX
|
24
|
9,251
|
8 Mayo 2006, 23:36 pm
por Kizar
|
|